5

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

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

我目前正在执行以下操作:

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

不管实际实现如何,这似乎是一个不优雅的解决方案。有没有人有更好的方法?

4

2 回答 2

4

我正在做一些非常相似的事情,但我现在认为我更喜欢使用javascript将所有时间转换为客户端的本地时间。服务器将在生成的页面中以 UTC 格式提供所有时间,一旦页面加载,javascript将对其进行转换。

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

我看到这种方法的唯一问题是:

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

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

于 2008-10-07T18:59:38.510 回答
2

您可以使用 HttpRequest 对象的“标头”属性来查询客户端发送的“If-Modified-Since”标头。此标头应包含格式包含客户端时区的日期,如下所示:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

一个简单的子字符串提取将为您提供时区代码。但是,恐怕并非所有浏览器在发送该标头时都是一致的,因此您应该对此进行一些试验。

问候,法布里齐奥

于 2008-10-07T19:02:42.653 回答