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

时间:2010-02-19 20:36:09

标签: c# javascript jquery

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

如何根据用户时区显示时间?我有一种感觉,我需要让用户输入他的位置才能做到这一点吗?什么是从位置获取时间并考虑节省日光的最佳方式?或通过将UTC转换为他的通过JS和jquery来作弊?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

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

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

答案 2 :(得分:1)

只需将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)

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