【问题标题】:How do i display the time in the user time zone?如何在用户时区显示时间?
【发布时间】:2011-01-18 22:52:49
【问题描述】:

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

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

【问题讨论】:

标签: c# javascript jquery


【解决方案1】:
  1. 您可以要求用户按照您的建议选择时区。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这假定用户在操作系统中选择了正确的区域设置。
    • 没错。如果您想将用户的本地时间转换为另一个时区(或者,在您的情况下,将您的服务器的值转换为用户的时区),这是一个很好的教程:articles.techrepublic.com.com/5100-10878_11-6016329.html
    • @Daniel:这就是我在最后一句中添加警告的原因。 :)
    【解决方案3】:

    只需将 UTC 时间传递给 JavaScript Date() 构造函数。生成的 Date 对象将是用户本地时区的时间,具体取决于他们的计算机设置。

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

    在 Chrome 中,太平洋时区显示

    2010 年 2 月 19 日星期五 05:00:00 GMT-0800(太平洋标准时间)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2010-12-22
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多