Skip to content

Commit 9400970

Browse files
Merge pull request #1144 from barclayadam/master
Change StripeDateTimeConverter to write epoch not MS /Date(.)/ format
2 parents e84c8da + fdd43ef commit 9400970

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using FluentAssertions;
3+
using Newtonsoft.Json;
4+
using Stripe.Infrastructure;
5+
using Xunit;
6+
7+
namespace Stripe.Tests.Xunit
8+
{
9+
public class datetime_json_converter
10+
{
11+
[Fact]
12+
public void should_roundtrip_datetimes()
13+
{
14+
var obj = new TestObject
15+
{
16+
Date = RoundedDate()
17+
};
18+
19+
var reloaded = JsonConvert.DeserializeObject<TestObject>(JsonConvert.SerializeObject(obj));
20+
reloaded.Date.Should().Be(obj.Date);
21+
}
22+
23+
[Fact]
24+
public void should_handle_null()
25+
{
26+
var obj = new TestObject
27+
{
28+
Date = null
29+
};
30+
31+
var reloaded = JsonConvert.DeserializeObject<TestObject>(JsonConvert.SerializeObject(obj));
32+
reloaded.Date.Should().BeNull();
33+
}
34+
35+
private static DateTime RoundedDate()
36+
{
37+
var date = DateTime.UtcNow;
38+
39+
return date.AddTicks( -1 * (date.Ticks % TimeSpan.TicksPerSecond));
40+
}
41+
42+
public class TestObject
43+
{
44+
[JsonConverter(typeof(StripeDateTimeConverter))]
45+
public DateTime? Date { get; set; }
46+
}
47+
}
48+
}

src/Stripe.net/Infrastructure/JsonConverters/StripeDateTimeConverter.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ internal class StripeDateTimeConverter : DateTimeConverterBase
88
{
99
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
1010
{
11-
writer.WriteRawValue(@"""\/Date(" + EpochTime.ConvertDateTimeToEpoch((DateTime)value).ToString() + @")\/""");
11+
if (value == null)
12+
writer.WriteNull();
13+
else
14+
writer.WriteRawValue(((DateTime)value).ConvertDateTimeToEpoch().ToString());
1215
}
1316

1417
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)

0 commit comments

Comments
 (0)