在我的网站上,我使用时间的唯一地方是我插入数据库时。 当我拉它时,我想根据用户时区显示时间。我在C#中生成页面的这一部分(在ASP.NET中提供但不使用.aspx代码文件)。
如何根据用户时区显示时间?我有一种感觉,我需要让用户输入他的位置才能做到这一点吗?什么是从位置获取时间并考虑节省日光的最佳方式?或通过将UTC转换为他的通过JS和jquery来作弊?
答案 0 :(得分:6)
您可以使用Javascript Date对象来获取此信息。 Date.getTimezoneOffset()将为您提供日期的本地和UTC表示之间的分钟差异。实际值最终来自系统时钟,如果设置正确,它将知道它所在的时区。
答案 1 :(得分:3)
您可以要求用户按照您的建议选择时区。
您可以按Robusto's answer中的建议使用(new Date).getTimezoneOffset();
。这将返回从用户的本地时间减去UTC的分钟数。用户必须在操作系统中配置了正确的时区才能获得良好的效果。
通过在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)
如果您需要在服务器端提供此信息,请不要向用户询问其位置。只要直接询问他们的时区即可。许多网站(特别是论坛)已经这样做了。