jQuery.timeago插件的时区问题

Ian*_*Ian 4 jquery timestamp timeago

我正在为我的博客使用timeago jQuery插件,但是时间本身似乎存在问题,我无法指出问题的原因是什么.

它目前在2011年5月31日当地时间2011年02:30(GMT + DST).现在我使用的示例日期是... 2011年5月31日02:01.以下标签为

<abbr class="timeago" title="2011-05-31T02:01:44+00:00">May 31st, 2011</abbr>
Run Code Online (Sandbox Code Playgroud)

然而jQuery输出的日期是"从现在起32分钟",由于某种原因提前一小时.

谁知道我在做错了什么?

no.*_*ing 10

这里有猜测,所以我可能错了.

问题是你指定的测试时间间隔有一个偏移量,0所以它与UTC相同 - 但这与你在GMT时区中遵循DST时的时间不一样.

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

毕竟,将所有时间转换为UTC可能会有所帮助,这就是它的用途,对吧?02:30 GMTDST之后是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,你的时区在你的时区.