【发布时间】:2023-03-06 18:45:01
【问题描述】:
我注意到如果我将setTimeout设置为未来1分钟,然后将我的系统时间更改为过去5分钟,setTimeout功能将在6分钟后触发。
我这样做是因为我想看看在夏令时更改系统时钟期间会发生什么。
我的 JavaScript 网页使用setTimeout 函数每 5 秒自动刷新一次页面,如果出现夏令时,页面信息将冻结一个小时。有解决办法吗?
编辑:我正在使用 Ajax 更新页面,我不想刷新整个页面。
【问题讨论】:
-
发生夏令时更改时,实际上是时区偏移更改,而不是对 UTC 的更改。如果 DST 由系统自动处理,您执行的测试不会模拟实际发生的情况。 Leap seconds 可能仍然会造成问题,但是,如果计算机的时钟与实际时间相差甚远(因此它不会逐渐改变时间),自动时间同步也会产生问题。
-
我刚刚在 Windows 7 上的 IE7、IE8、IE9、Firefox 和 Chrome 中对此进行了测试,但没有看到您描述的行为。也许这是特定于操作系统的?
-
@idealmachine,有没有一种简单的方法来测试夏令时?
-
@gilly3,我可以在 Ubuntu 10.10 上使用最新的 Google Chrome 和 Firefox 3.6 随意重现这个问题
-
如前所述,DST 正在改变时区偏移量。为了测试它,你只需要改变你的时区。
标签: javascript settimeout system-clock