我四处寻找,我真的不确定为什么会发生这种情况。
大多数情况下,我的应用程序在使用 GMT 的设备上以 GMT 运行,但我只是在新加坡建立了一个服务器,所以时间提前了 8 小时。我看到从 JSON 解析的 DateTime 对象的一些奇怪行为:
我的应用收到这样的 JSON (ISO 8601) 日期:
LastSync=2013-01-10T11:05:38.822Z
我正在使用一个简单的 .asmx Web 服务,它使用 .Net 3.5 的内置 JSON 序列化程序,自动解析的 DateTime 对象返回的日期比 JSON 所说的要早 8 小时。这是功能:
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function SyncFlatTable(ByVal tableName As String, ByVal LastSync As DateTime)
Return WebServiceJSON.SyncFlatTable(tableName, LastSync)
End Function
如您所见, LastSync as DateTime 参数的值是提前 8 小时:
奇怪的是,如果我返回 Now(),来自 Web 服务的 JSON 输出是:
newLastSend=/日期(1357817197087)/
使用时间戳到日期在线转换器不再提前 8 小时。
这是IIS的错吗?我看不到任何其他文化设置,其他一切都是中性的,为什么要更改日期?我该如何阻止它,或者我必须接受我所得到的并将日期调整为不变的文化日期?