javascript日期与不同时区的问题

时间:2017-04-18 16:17:49

标签: javascript c# json datetime json.net

我有一个带有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”,我该怎么办?

1 个答案:

答案 0 :(得分:1)

检查DateTimeZoneHandling设置。我建议你总是用UTC序列化日期以避免这种冲突:

JsonConvert.SerializeObject(collectionValues, new JsonSerializerSettings
{
    DateTimeZoneHandling = DateTimeZoneHandling.Utc
});