传递给Javascript时,ASP.NET DateTime对象“更改”

时间:2013-03-04 12:47:44

标签: javascript asp.net web-services utc

我的ASP.NET Web服务在我的测试环境中在我的本地计算机上运行。我的本地计算机UTC时间是+1(丹麦)。 现在我的javascript客户端可以使用这些方法:

[WebMethod(EnableSession=true)]
public DateTime GetDateTime() {
  return new DateTime(2013,3,15,10,0,0);
}

[WebMethod(EnableSession=true)]
public void SetDateTime(DateTime DT) {

}

当我从javascript调用第一个方法并提醒传递的DateTime时,它会正确显示上午10点的时间:'Fri Mar 15 2013 10:00:00 GMT + 0100(浪漫标准时间)' 在此警报之后,我立即将DateTime对象传递回Web服务器。但是当我调试这个对象时,DateTime现在是上午9点。 怎么会?客户端和服务器在同一台计算机上运行。 我玩过DateTime.SpecifyKind,但整体结果是一样的;客户端在将时间发送回服务器时减去一小时。

希望你能帮助我更好地理解这个主题。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

@millimoose我已经尝试过DateTimeOffset解决方案,但它并没有真正帮助。我不确定我是否100%正确使用它。现在对我有用的是:

在我将DateTime从服务器发送到客户端之前,我没有对DateTime做任何事情(例如设置UTC)。然后,javascript客户端显示正确的时间。 当javascript将时间发送回服务器时,会添加一个小时。然后我调用.ToLocalTime();在DateTime对象上,现在时间正确。