当前位置:  开发笔记 > 编程语言 > 正文

.net JSON序列化程序将本地客户端时间返回给浏览器?

如何解决《.netJSON序列化程序将本地客户端时间返回给浏览器?》经验,为你挑选了0个好方法。

我使用asp.net [WebMethod]将.net对象推送回浏览器上的Ajax调用.该对象的一个​​属性是DateTime类型.

当它到达浏览器时,时间比存储在SQL Server中的时间早7个小时.

好的,所以我的浏览器在秘鲁(GMT-5),服务器在德国(目前是GMT + 2),这就是7小时的来源.

作为修复,我使用Ajax请求在客户端上发送UTC偏移量

d = new Date();
d.getTimezoneOffset();

然后在服务器上我找出那里的偏移量:

  // get a local time zone info
  TimeZoneInfo tz = TimeZoneInfo.Local;

  // get it in hours
  int offset = tz.BaseUtcOffset.Hours;

  // add one hour if we are in daylight savings
  if (tz.IsDaylightSavingTime(DateTime.Now))
  {
      offset++;
  }

现在我可以在发送到浏览器之前修复对象中的时间字段.

我真正的问题是,序列化器如何知道7小时?

http请求不包含任何时间信息.

如果我想要存储在数据库中的确切时间,我会问得太多吗?

更新:

这是一个例子,数据库中的日期是:2009年10月15日22:00

没有附加TimeZone信息.

当我在我的开发机器上调用我的WebMethod时,客户端和服务器显然位于同一时区,服务器的JSON是:

{"d":{"TheDate":"\/Date(1255662000000)\/"}}

德国远程服务器的JSON是:

{"d":{"TheDate":"\/Date(1255636800000)\/"}}

在Firebug中看到的JSON相差7小时.此时尚未涉及JavaScript.

我有一个想法是asp.net将一个TimeZone附加到一个会话,但似乎并非如此.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有