繁体   English   中英

如何在用户时区显示时间?

[英]How do i display the time in the user time zone?

在我的网站上,我唯一使用时间的地方是我插入数据库时​​。 当我拉它时,我想根据用户时区显示时间。 我正在用 C# 生成页面的这一部分(在 ASP.NET 中提供,但不使用 .aspx 代码文件)。

如何根据用户时区显示时间? 我有一种感觉,我需要让用户输入他的位置才能执行此操作? 从位置获取时间并考虑夏令时的最佳方法是什么? 或者通过 JS 和 jquery 将 UTC 翻译成他的作弊?

您可以使用 Javascript Date 对象来获取它。 Date.getTimezoneOffset() 将为您提供本地和 UTC 日期表示之间的分钟差。 实际值最终来自系统时钟,如果设置正确,将知道它所在的时区。

  1. 您可以要求用户按照您的建议选择时区。

  2. 您可以使用(new Date).getTimezoneOffset(); 正如Robusto 的回答中所建议的那样。 这将返回从用户的本地时间中减去以获得 UTC 的分钟数。 用户必须在操作系统中配置正确的时区才能获得良好的结果。

  3. 另一个通过在 JavaScript 中在new Date();之间进行客户端日期比较来“猜测”用户时区的技巧new Date(); 和服务器生成的时间戳。

    这样做的好处是,即使用户没有在操作系统中配置正确的区域设置,它也能工作。 只要用户的电脑时钟精确到+/- 30分钟,就应该是可靠的。

只需将 UTC 时间传递给 JavaScript Date()构造函数。 根据用户计算机的设置,生成的Date对象将是用户本地时区的时间。

var gmt = new Date('Feb, 19 2010 13:00:00 GMT');
alert(gmt);

在 Chrome 中,在太平洋时区,这会显示

Fri Feb 19 2010 05:00:00 GMT-0800 (Pacific Standard Time)

如果您需要在服务器端获得此信息,请不要向用户询问他们的位置。 只需直接询问他们的时区即可。 许多网站(特别是论坛)已经这样做了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM