Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 7f79573

Browse files
committed
Add tests to show JsConfig.AlwaysUseUtc deserializes as UTC
1 parent 6a2e730 commit 7f79573

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

tests/ServiceStack.Text.Tests/JsonTests/JsonDateTimeTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,5 +633,32 @@ public void ToUnixTimeTests()
633633
Assert.That(dates.All(x => x.ToUnixTimeMs() == x.ToUnixTimeMsAlt()));
634634
}
635635

636+
[Test]
637+
public void Does_deserialize_UTC_dates_as_UTC()
638+
{
639+
JsConfig.AlwaysUseUtc = true;
640+
var initialDate = new DateTime(2012, 7, 25, 16, 17, 00, DateTimeKind.Utc);
641+
642+
var json = JsonSerializer.SerializeToString(initialDate); //"2012-07-25T16:17:00.0000000Z"
643+
var deserializedDate = JsonSerializer.DeserializeFromString<DateTime>(json);
644+
645+
Assert.AreEqual(DateTimeKind.Utc, deserializedDate.Kind);
646+
Assert.AreEqual(initialDate, deserializedDate);
647+
}
648+
649+
[Test]
650+
public void Does_deserialize_Local_dates_as_UTC()
651+
{
652+
JsConfig.AlwaysUseUtc = true;
653+
var initialDate = new DateTime(2012, 7, 25, 16, 17, 00, DateTimeKind.Local);
654+
655+
var json = JsonSerializer.SerializeToString(initialDate); //"2012-07-25T16:17:00.0000000Z"
656+
var deserializedDate = JsonSerializer.DeserializeFromString<DateTime>(json);
657+
658+
var expected = initialDate.ToUniversalTime(); //Convert to UTC
659+
660+
Assert.AreEqual(DateTimeKind.Utc, deserializedDate.Kind);
661+
Assert.AreEqual(expected, deserializedDate);
662+
}
636663
}
637664
}

0 commit comments

Comments
 (0)