我有一个多时区Web应用程序,它将所有日期时间值以UTC格式存储在数据库中,当服务器上发生操作时,我可以轻松地将时间转换为UTC。
但是,当客户输入时间或时间跨度时,检测和存储它的最佳方法是什么?
我目前正在做以下事情:
无论实际实施如何,这似乎都是一个优雅的解决方案。有没有人有更好的方法?
答案 0 :(得分:4)
我做的事情非常相似,但我现在认为我更喜欢使用javascript将所有时间转换为客户端本地。服务器将在生成的页面中提供UTC的所有时间,并且一旦页面加载,javascript将转换它。
这消除了服务器端代码的混淆,因为我总是知道它的时间(UTC)。在客户端,我使用jquery和each()函数一次格式化所有时间值。我在隐藏字段中将每个时间写为unix时间,以便使用jquery轻松处理。
我用这种方法看到的唯一问题是a)我在javascript中没有真正好的日期/时间格式化例程,而b)如果用户关闭了javascript,那么它就不起作用了。
答案 1 :(得分:2)
您可以使用HttpRequest对象的“header”属性来查询客户端发送的“If-Modified-Since”标头。此标头应包含一个格式的日期,该格式包含客户端的时区,如下所示:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
简单的子字符串提取将为您提供时区代码。 但是,我担心并不是所有的浏览器在发送标题时都是一致的,所以你应该对它进行一些实验。
的问候, 的Fabrizio