The main problem with DateTime.MinValue is DateTimeKind.Unspecified . It is defined as:
MinValue = new DateTime(0L, DateTimeKind.Unspecified);
But this is not a real problem, this definition leads to a problem during serialization. JSON DateTime serialization is done through:
System.Runtime.Serialization.Json.JsonWriterDelegator.WriteDateTime(DateTime value)
Unfortunately, it is defined as:
... if (value.Kind != DateTimeKind.Utc) { long num = value.Ticks - TimeZone.CurrentTimeZone.GetUtcOffset(value).Ticks; if ((num > DateTime.MaxValue.Ticks) || (num < DateTime.MinValue.Ticks)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString("JsonDateTimeOutOfRange"), new ArgumentOutOfRangeException("value"))); } } ...
Therefore, it does not account for Unspecified and treats it as Local . To avoid this situation, you can define your own constant:
MinValueUtc = new DateTime(0L, DateTimeKind.Utc);
or
MinValueUtc = DateTime.MinValue.ToUniversalTime();
It looks weird, but it helps.
Nick Martyshchenko Oct 26 '10 at 17:27 2010-10-26 17:27
source share