JavaScriptDateTimeConverter在服务器上给出不同的结果

时间:2011-03-09 07:06:30

标签: json datetime

以下代码在本地计算机上运行正常。另一方面,在服务器上,它将日期改为1天。

JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());

从数据库返回的值为:2010-09-16 00:00:00.000

JsonSerializer在本地提供2010-09-16,并在服务器上提供2010-09-15 ..

任何想法?


为了澄清问题我做了一个简单的测试;

string str = JsonConvert.SerializeObject(Convert.ToDateTime("2010-09-16 00:00:00.000"), new JavaScriptDateTimeConverter());
Response.Write(str);

此代码在不同的机器上产生不同的结果。为什么?

新日期(1284584400000)和新日期(1284588000000)或

Wed Sep 15 2010 23:00:00 and Thu Sep 16 2010 00:00:00

2 个答案:

答案 0 :(得分:0)

这可能是一个时区问题。您的服务器位于不同的时区吗?是时区调整日期和时间吗?

答案 1 :(得分:0)

这是一个时区问题。默认情况下,JavaScriptDateTimeConverter使用UTC日期。您需要创建一个SerializerSettings对象,并设置

settings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;