Chrome:时区偏移是不同的选项卡?

Chrome: Timezone Offset is Different Tab By Tab?

提问人:azoundria 提问时间:12/22/2018 最后编辑:azoundria 更新时间:12/25/2018 访问量:1269

问:

我正在开发一个网络工具,目前遇到了一个问题,在某些选项卡上,我得到的是 UTC 而不是正确的时区偏移量。

即如果我放入控制台:

(新的 Date()).getTimezoneOffset()

我在某些选项卡中得到 0,在其他选项卡中得到 420 的值。甚至加载了完全相同网站的选项卡。

当我使用 getMonth、getDate、getHours 等时......时间也都是 UTC。

我是使用 getTimezoneOffset 的新手,所以我应该期待这种行为吗?根据我正在阅读的内容,我认为这应该是我在 PC 上的本地时间,在此过程中根本没有更改。

Chrome 版本 71.0.3578.80(官方版本)(64 位)

是我做错了什么,还是这真的是我在 Chrome 中发现的错误?我似乎找不到任何此类错误的记录。最接近的是特定于 Android 的。https://bugs.chromium.org/p/chromium/issues/detail?id=520783

但是,我似乎不太可能是第一个发现这样的错误的人,因为有这么多 Chrome 用户。我想确保这绝对是一个错误。

以下是一些附加信息:

navigator.userAgent = Mozilla/5.0 (Windows NT 6.1;Win64的;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36

工作选项卡:

Intl.DateTimeFormat().resolvedOptions().timeZone = undefined
new Date().toString() = "Mon Dec 24 2018 16:09:55 GMT-0700 (GMT-07:00)"
(new Date()).getTimezoneOffset() = 420
(new Date()).getHours() = 16

失败的选项卡:

Intl.DateTimeFormat().resolvedOptions().timeZone = "Etc/Unknown"
new Date().toString() = "Mon Dec 24 2018 23:09:44 GMT+0000 (GMT)"
(new Date()).getTimezoneOffset() = 0
(new Date()).getHours() = 23

时间正确变化。只有时区是错误的。

它似乎与 URL 相关。例如,如果在新标签页中打开之前失败的网站网址,则会再次失败。

新选项卡似乎没有这个问题,但是一旦我访问“中毒”的 URL,该选项卡上的时区就会受到影响。

访问一个好的 URL 似乎可以解决问题,但是访问 about:blank 没有区别。

例如,如果我打开一个新选项卡,它可以正常工作。然后我访问 stackoverflow.com(目前中毒),然后时区失败。现在我访问 stackexchange.com(无毒),时区很好。然后我去 stackoverflow.com,它又坏了。现在,我转到 about:blank,它仍然坏了。如果我访问 stackexchange.com 它又能起作用了。然后我访问 about:blank,时区仍然正确。

它似乎是特定于域名的。例如,每个 stackoverflow.com 的选项卡都被破坏了,而 stackexchange.com 上的每个问题都有正确的时区。我已经在每个 URL 上测试了至少 7 个页面。

它不会影响隐身模式。例如,如果我使用 Ctrl + Shift + N 打开一个新窗口,然后访问 stackoverflow.com,则时区是正确的。但是,如果我正常打开一个新窗口 Ctrl + N,那么时区仍然被打破。

当我刚开始的时候,我打开了多个选项卡到同一个站点,其中一些可以工作,有些则失败了。如果我没记错的话,首先失败的是最新的选项卡。我可以复制一个工作选项卡并获得另一个具有相同 URL 的选项卡。如果我复制了失败的选项卡,那么我还会得到另一个失败的选项卡。但是,在隐身模式之外,我不再有任何关于失败 URL 的工作选项卡。

javascript google-chrome 控制台 区时 区偏移

评论

1赞 Josh Lee 12/23/2018
此外,一些 Mac 错误 crbug.com/773532 crbug.com/818249 但它们被标记为已修复。
1赞 Matt Johnson-Pint 12/24/2018
嗯。.几天前,其他人也问了同样的问题......也许确实有一个错误。我会要求您提供相同的详细信息:请提供 、 和 的输出,并告诉我们它们在空白选项卡 (url: ) 和其他任何选项卡之间是否不同。谢谢。navigator.userAgentIntl.DateTimeFormat().resolvedOptions().timeZonenew Date().toString()about:blank
1赞 Matt Johnson-Pint 12/27/2018
感谢您的更新。从用户代理中,我看到您在 Windows 71 上运行 Chrome 71(最新)。您是否修改了 Windows 时区设置或删除了时区注册表项?你使用的是 Windows 更新吗?通读这个问题,包括评论和我对它的回答。具体而言,请选中 和 。这是否对这个问题有所启示?tzutil /gHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformationHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
1赞 azoundria 12/28/2018
在最近的历史记录中未修改任何设置。Windows 更新已启用,并且是最近更新的。我不知道这里的时区有任何变化。“Mountain Standard Time”注册表项确实存在许多时区,我可以在控制面板中自由选择时区。TimezoneKeyName 是山区标准时间。一个想法是,它可能与恢复大量选项卡有关。这大约是我能想到的唯一一件对我来说不寻常的事情。
1赞 Matt Johnson-Pint 12/28/2018
谢谢。我会进一步调查......

答: 暂无答案