【问题标题】:Timezone problem with jQuery.timeago pluginjQuery.timeago 插件的时区问题
【发布时间】:2011-05-31 01:31:37
【问题描述】:

我的博客使用的是timeago jQuery插件,但似乎时间本身有问题,我无法确定问题的原因是什么。

这里是当地时间 2011 年 5 月 31 日 02:30 (GMT+DST)。现在我使用的示例日期是...... 2011 年 5 月 31 日 02:01。下面的标签是

<abbr class="timeago" title="2011-05-31T02:01:44+00:00">May 31st, 2011</abbr>

然而 jQuery 输出日期是“从现在起 32 分钟”,由于某种原因它提前一小时。

有人知道我在这里做错了什么吗?

【问题讨论】:

    标签: jquery timestamp timeago


    【解决方案1】:

    在这里冒昧地猜测一下,所以我可能完全错了。

    问题在于您指定的测试时间atmp 的偏移量为0,因此它与 UTC 相同 - 但 这与您在 GMT 时区遵循 DST 时的时间不同

    GMT 与 UTC 相同,即偏移量为 0。但是,您提到 DST 并且在遵循夏令时时,您的时钟向前移动 1 小时,您的 UTC 偏移量也是如此。所以你现在的时间,相对于 UTC,实际上是UTC + 0100。这就是额外时间的来源。

    首先将所有时间转换为 UTC 可能会有所帮助,毕竟,这就是它的用途,对吧? 02:30 GMT 同时遵循 DST 是 01:30 UTC。所以与此相比,02:01 UTC 的测试时间戳大约是未来半小时 - 因此32 minutes from now

    如果您希望看到的是30 minutes ago,那么您的测试日期应该是2011-05-31T01:01:44+00:00,以便通过时钟显示来表示与02:01 的时间等效的UTC 时间戳 >.


    最安全的解决方案是始终使用 UTC 时间戳 - 这就是 SO、Facebook 和 Twitter 发布帖子的日期。然后可以为每个用户的时区明确解释和格式化 UTC 时间戳。

    那么,您的工作将是确保您使用的时间戳不仅仅是您在钟面上看到的,而是与它等效的 UTC - 在您当前的时区,UTC 时间可能比时间晚 1 小时显示。并且根据您用于生成 HTML 的内容,您应该能够找到一个内置于语言/平台或作为第三方库的函数,它将为您提供与显示的当前时间相同的 UTC考虑 DST 时区的时钟。

    【讨论】:

    • 你说得对,我已将时间格式更改为 UTC,一切正常。但是现在这意味着我必须像发布一小时前一样发布帖子。
    • @Ian 如果您全年都这样做,那将是不正确的 - 问题是您使用时钟时间但将其发布为 UTC。您必须执行以下操作之一 1) 使用正确的偏移量 - 只要遵循 DST,您的日期必须具有 +01:00 的偏移量 2) 使用实际的 UTC 时间戳 - 这将是您的时间 -01 :00。我建议您这样做 - 如果您曾经搬到不同的时区,它也会起作用!这就是 SO、Facebook 和 Twitter 等网站的帖子日期 - 使用针对不同用户时区格式化的实际 UTC 时间戳。
    • @mu 太短了 那肯定很好 - 我从来不明白夏令时的必要性!
    【解决方案2】:

    目前是 2011 年 5 月 31 日 02:30 本地时间 (GMT+DST)。

    你不说 DST 是什么,我假设它是 +1h,和上面的 no.good.at.coding 一样

    现在我使用的示例日期是... 2011 年 5 月 31 日 02:01。以下 标记为

    2011-05-31T02:01:44+00:00

    您现在是 02:30,即 01:30 UTC。您的日期从 02:01 UTC 算起,即 03:01 您的时间,即未来半小时。

    按照建议,您应该将所有日期保存为 UTC。例如 Python 有一个 datetime.utcnow() 方法。始终保存为 UTC,然后在显示时转换为当地时区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 2019-04-24
      • 2011-08-21
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 2022-06-18
      • 1970-01-01
      相关资源
      最近更新 更多