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

标签 c# javascript timezone

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

但是,当客户端输入一个时间或时间跨度时,最好的检测和存储方式是什么?

我目前正在做以下事情:

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

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

最佳答案

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

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

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

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

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

关于c# - 检测和存储 Web 应用程序客户端所在时区的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179834/

相关文章:

javascript - 如何检查时间是否四舍五入为:00 or :30 or not in js?

android - 如何在android中以秒为单位获得UTC偏移量

datetime - 转换时区时注意夏令时

qt - 如何在 Qt 中获取所有时区列表?

c# - 在 C# 中引用主线程

c# - 我的 System.Numerics 命名空间在哪里?

c# - .NET 任务的性能指标/诊断

c# - 如何使某些datagridview列只接受C#中的数值

javascript - 如何在没有框架的情况下测试 JavaScript

javascript - 刷新或按后退按钮后 AppBar 内容错误