检测和存储Web应用程序客户端所在的时区的最佳方法是什么?

Zac*_*tes 5 javascript c# timezone

我有一个多时区Web应用程序,它将所有日期时间值以UTC格式存储在数据库中,当服务器上发生操作时,我可以轻松地将时间转换为UTC.

但是,当客户输入时间或时间跨度时,检测和存储它的最佳方法是什么?

我目前正在做以下事情:

  1. 获取Date.getTimezoneOffset()(javascript)的值
  2. 通过Page上的ICallbackEventHandler将其发布到服务器端代码.
  3. 将该值存储在会话中
  4. 在任何后续请求中,使用客户端的时区计算输出/输入日期时间值.

无论实际实现如何,这似乎都是一个优雅的解决方案.有没有人有更好的方法?

Mne*_*quo 4

我正在做一些非常类似的事情,但我现在认为我更喜欢使用javascript在客户端将所有时间转换为本地时间。服务器将在生成的页面中给出所有 UTC 时间,并且JavaScript将在页面加载后对其进行转换。

这消除了服务器端代码的混乱,因为我总是知道现在是什么时间(UTC)。在客户端,我使用jqueryeach()函数来一次性格式化所有时间值。我将每个时间作为Unix时间写在隐藏字段中,以便于使用jquery进行处理。

我发现这种方法的唯一问题是:

a)我在javascript中还没有一个非常好的日期/时间格式化例程,并且

b) 如果用户关闭了javascript,则它不起作用。