不同时区的javascript日期存在问题
我有一个具有DateTime属性get的对象;设置它位于C中的集合列表中。此属性保存DateTime.MinValue 01/01/0001 12:00:00 AM的值 我正在使用Newtsonsoft.Json.Net库将我的对象集合序列化为Json,如下所示不同时区的javascript日期存在问题,javascript,c#,json,datetime,json.net,Javascript,C#,Json,Datetime,Json.net,我有一个具有DateTime属性get的对象;设置它位于C中的集合列表中。此属性保存DateTime.MinValue 01/01/0001 12:00:00 AM的值 我正在使用Newtsonsoft.Json.Net库将我的对象集合序列化为Json,如下所示 JsonConvert.SerializeObject(collectionValues, new JsonConverter[] { new JavaScriptDateTimeConverter() }) datetime
JsonConvert.SerializeObject(collectionValues,
new JsonConverter[] { new JavaScriptDateTimeConverter() })
datetime属性的转换输出是new Date-62135578800000,在UTC-5中,它给我的日期是Mon Jan 01 00:00:00 GMT-0500,但在其他时区进行一些测试,我的序列化仍然是new Date-62135578800000,但javascript的输出与Sun Dec 31 0 22:00:00 GMT-0700大不相同
我在改变电脑时区的电脑上运行了这个测试
当我的属性服务器端为DateTime.MinValue时,如何始终返回Mon Jan 01 1 00:00:00的值,而不管是哪个时区?检查设置。我建议您始终使用UTC序列化日期,以避免此类冲突:
JsonConvert.SerializeObject(collectionValues, new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});
为什么?这两次是一样的。第一个是EST,第二个是MST。为什么你要比较字符串,那么你应该比较DateTime。我不理解你的评论。我不是在比较字符串。我只是把新日期产生的输出-62135578800000。在我的客户端代码中,我直接使用DateTime类型,但如果我的用户PC时区发生变化,则由于javascript中的年份错误,应用程序会给出不同的输出。这正是它在不同时区时的工作方式。转换为UTC并不能解决这个问题,因为它将把每一天都推到下一年。