我有一个多时区 Web 应用程序,它以 UTC 格式将所有日期时间值存储在数据库中,当服务器上发生操作时,我可以轻松地将时间转换为 UTC。
但是,当客户端输入一个时间或时间跨度时,最好的检测和存储方式是什么?
我目前正在做以下事情:
- 获取 Date.getTimezoneOffset() 的值(javascript)
- 通过页面上的 ICallbackEventHandler 将其发布到服务器端代码。
- 将该值存储在 session 中
- 在任何后续请求中,使用客户端的时区计算输出/输入日期时间值。
不管实际实现如何,这似乎都是一个不够优雅的解决方案。谁有更好的方法?
最佳答案
我正在做一些非常相似的事情,但我现在认为我更喜欢使用 javascript 在客户端将所有时间转换为本地时间。服务器将在生成的页面中以 UTC 格式给出所有时间,javascript 将在页面加载后转换它。
这消除了服务器端代码的困惑,因为我总是知道现在几点 (UTC)。在客户端,我使用 jquery 和 each()
函数一次格式化所有时间值。我在隐藏字段中将每个时间写为 Unix 时间,以便使用 jquery 进行处理。
我看到这种方法的唯一问题是:
a) 我在 javascript 中还没有真正好的日期/时间格式化例程,并且
b) 如果用户关闭了 javascript,则它不起作用。
关于c# - 检测和存储 Web 应用程序客户端所在时区的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179834/