javascript - ASP.NET 中的客户端时区

标签 javascript asp.net timezone

我有一个表格需要以客户的时区显示日期/时间。但是,我很难找到有效执行此操作的方法。我知道我可以使用客户端 javascript 来获取时区(而且这个方法有点不稳定),但我在 Page_Load 事件中需要它,所以我不能事先调用 javascript。

我可以从单独的页面(例如登录时)获取它,但这并不总是有效,因为有时人们会直接在内部页面中使用书签,并使用 cookie 绕过登录。

所以我有几个选择: 1. 为每个用户设置一个缓存,用于我在每次回传中填充的最后一个时区,但不保证它是正确的)

  1. 尝试一些奇怪的 IP 地理定位黑客

  2. 拥有一个允许用户设置时区的用户配置文件(同样,如果他们旅行,这也不总是正确的)

  3. 尝试一些时髦的页面重定向来强制回发,(但一些浏览器禁用页面重定向)

  4. 让用户明确设置 TZ

  5. 在 Javascript 中进行 tz 格式化

这些都不是理想的,在我看来,浏览器应该提供服务器的信息。还有其他建议吗?

最佳答案

如果可能,相对显示时间。不要显示特定时间,而是使用诸如“5 分钟前”或“上周”之类的散文。

如果您必须显示客户端时区的绝对时间,根据您的意见,我会选择选项 #5,将 UTC 时间发送到浏览器,然后使用 JavaScript 显示本地时间。根据您的描述,听起来用户无需登录即可访问需要显示其时区时间的页面,因此将其存储在用户配置文件中似乎不够充分。

我在 Advice for Storing and Displaying Dates and Times Across Different Time Zones 中更详细地讨论了相对时间显示概念,以及在 DateTime 结构上提供一个简单的扩展方法,用于添加 ToRelativeDateString 方法,以便您可以编写如下代码:

string relativeTime = myDateTimeVariable.ToRelativeDateString();

希望这有助于...

关于javascript - ASP.NET 中的客户端时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294021/

相关文章:

javascript - 如何切换多个字体图标

javascript - Webpack 无法呈现快速导入

javascript - Asp.net 使用 jQuery 将文本框输入转换为大写

c# - 如何使用 c# 在 asp.net 2.0 中创建条形图和饼图?

javascript - 如何在 JavaScript 中确定系统的 Olson zoneinfo?

javascript - HTML5 Web Workers 在 Firefox 4 中工作,但在 Chrome 12.0.742.122 中不工作

javascript - 异步等待 + Gulp - GulpUglifyError : unable to minify JavaScript?

python - 无法找到使用 jwcrypto 在 python 中解密 JWE token (但在 ASP.Net 中创建)的方法

java - 如何比较时区

ios - NSTimezone 从 timezoneId 获取缩写