Chrome 67+ 显示 1901年1月1日 之前的日期 时区“错误”
看下面3張圖,對于 Chrome 67和68,new Date(1900, 0, 31) 的結果,時區偏移居然是 +0805。此結果同樣出現在 安卓版 Webview 67。
然而,Chrome 66 及以前的版本,是正常的,如下圖:
下面是來自 Stack Overflow的解釋,下面以 中國 本地時間為例:
1、將年月日時分秒單獨傳遞給 Date 構造函數時,這些單獨的值是基于計算機所在的本地時區。new Date(1900,0,31,0,0,0,0) 代表 1900-01-31 00:00:00.000 本地時間.
2、時區是一個比較現代的發明,以前不存在時區的概念。大多數計算機保留的有關時區的數據來自IANA時區數據庫(Time Zone Database, TZDB)。在此數據中,對于大多數時區,最早的條目是基于與用于識別時區的城市相關的緯度和經度的太陽本地平均時間(LMT)。
3、new Date(1900,0,31,0,0,0,0) 轉為 UTC 時間是 1900-01-30 16:00:00.000 UTC,中國標準時間與 UTC 的偏差為 +08:00
4、TZDB 中值為 +08:00 的是 Asia/Shanghai
5、TZDB 中 Asia/Shanghai 的時區偏移 不止 +08:00 一個,如下圖,在 1850-1900 年,偏移量為 +08:05:43,1901年以及后,偏移量才是 +08:00,如下圖(詳情 查看這里):
6、因為上述的截斷,Chrome 66及以前的版本,對于所有的中國本地時間,可能只考慮了1901年之后的偏移量,而沒有考慮整個 TZDB。Chrome 67+ 做了修正,所以看上去像個“錯誤”。
同樣受此影響的還有 烏克蘭 本地時間
總結
以上是生活随笔為你收集整理的Chrome 67+ 显示 1901年1月1日 之前的日期 时区“错误”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【装机】【华硕TUF b450m-pro
- 下一篇: 银行兴起数字极简风:“智能手机App恐惧