我有一个带有DateTime属性(get; set;)的对象,它位于C#中的集合(List)中。此属性保存DateTime.MinValue(01/01/0001 12:00:00 AM)的值。
我正在使用Newtsonsoft.Json.Net库将我的对象集合序列化为像这样的JSON
JsonConvert.SerializeObject(collectionValues,
new JsonConverter[] { new JavaScriptDateTimeConverter() })
我的datetime属性的转换输出为new Date(-62135578800000)
,在UTC-5中给出的日期为“Mon Jan 01 1 00:00:00 GMT-0500”,但是在其他时区进行的一些测试我的序列化仍为new Date(-62135578800000)
,但javascript中的输出完全不同“Sun Dec 31 0 22:00:00 GMT-0700”
我在更改计算机时区的w3schools site上运行了此测试。
如果我的属性服务器端是DateTime.MinValue,那么无论什么时区都“Mon Jan 01 1 00:00:00”,我该怎么办?
答案 0 :(得分:1)
检查DateTimeZoneHandling设置。我建议你总是用UTC序列化日期以避免这种冲突:
JsonConvert.SerializeObject(collectionValues, new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});