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

Commit 5aeab04

Browse files
committed
Serialize DateTime.MinValue as UTC 0000Z
1 parent 4f42318 commit 5aeab04

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/ServiceStack.Text/DateTimeExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public static class DateTimeExtensions
2424
public const long UnixEpoch = 621355968000000000L;
2525
private static readonly DateTime UnixEpochDateTimeUtc = new DateTime(UnixEpoch, DateTimeKind.Utc);
2626
private static readonly DateTime UnixEpochDateTimeUnspecified = new DateTime(UnixEpoch, DateTimeKind.Unspecified);
27+
private static readonly DateTime MinDateTimeUtc = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);
2728

2829
public static long ToUnixTime(this DateTime dateTime)
2930
{
@@ -146,6 +147,8 @@ public static DateTime ToStableUniversalTime(this DateTime dateTime)
146147
{
147148
if (dateTime.Kind == DateTimeKind.Utc)
148149
return dateTime;
150+
if (dateTime == DateTime.MinValue)
151+
return MinDateTimeUtc;
149152

150153
#if SILVERLIGHT
151154
// Silverlight 3, 4 and 5 all work ok with DateTime.ToUniversalTime, but have no TimeZoneInfo.ConverTimeToUtc implementation.

tests/ServiceStack.Text.Tests/Utils/DateTimeSerializerTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,5 +213,14 @@ private void AssertDatesAreEqual(DateTime toDateTime, DateTime dateTime, string
213213
{
214214
Assert.That(toDateTime.ToStableUniversalTime().RoundToMs(), Is.EqualTo(dateTime.ToStableUniversalTime().RoundToMs()), which);
215215
}
216+
217+
[Test]
218+
public void Can_Serialize_new_DateTime()
219+
{
220+
var newDateTime = new DateTime();
221+
var convertedUnixTimeMs = newDateTime.ToUnixTimeMs();
222+
Assert.That(convertedUnixTimeMs.FromUnixTimeMs(), Is.EqualTo(newDateTime));
223+
}
224+
216225
}
217226
}

0 commit comments

Comments
 (0)