在这里猜测一下,所以我可能完全错了。
问题是您指定的测试时间atmp 有一个偏移量,0
因此它与 UTC 相同 - 但这与您在 GMT timezone 中遵循 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
为了表达一个 UTC 时间戳,该时间戳相当于02:01
您的时钟显示的时间。
最安全的解决方案是始终使用 UTC 时间戳——这就是 SO、Facebook 和 Twitter 发布帖子的日期。然后可以为每个用户的时区明确解释和格式化 UTC 时间戳。
那么,您的工作将是确保您使用的时间戳不仅仅是您在钟面上看到的,而是它的 UTC 等价物 - 在您当前的时区,UTC 时间可能比显示的时间晚 1 小时。并且根据您用于生成 HTML 的内容,您应该能够找到一个内置于语言/平台或作为第三方库的函数,它将为您提供与显示的当前时间相同的 UTC考虑 DST 时区的时钟。