Qwe*_*rty 7 javascript timezone datetime
我正在尝试计算相隔 600 年的两个日期之间的差异。我怀疑这与闰秒有关,但仔细观察后,发现了更奇怪的事情。在这两个日期之间,额外的02:16分钟数会立即更改。
PS:我本地时区是UTC+1
new Date(1891, 8, 30)
// Wed Sep 30 1891 00:00:00 GMT+0057 (Central European Summer Time) <- this is weird
new Date(1891, 9, 1)
// Thu Oct 01 1891 00:02:16 GMT+0100 (Central European Summer Time) <- this is weird
new Date(1891, 9, 2)
// Fri Oct 02 1891 00:00:00 GMT+0100 (Central European Summer Time)
Run Code Online (Sandbox Code Playgroud)
或者
new Date(Date.UTC(1891, 8, 30, 23, 2, 15))
// Wed Sep 30 1891 23:59:59 GMT+0057 (Central European Summer Time)
new Date(Date.UTC(1891, 8, 30, 23, 2, 16))
// Thu Oct 01 1891 00:02:16 GMT+0100 (Central European Summer Time)
Run Code Online (Sandbox Code Playgroud)
因此,最终我想显示n-th持续的小时d0 (如下)02:17 ,但我意外地得到了以实际小时标记切换的滞后时间。
我用了一些类似的东西
let HR = 60 * 60 * 1000 // 3600000 ... one hour in milliseconds
let d0 = new Date(1358, 7, 14) // 14.8. 1358
let d1 = new Date(2011, 3, 17) // "today"
let dt = d1 - d0
let r = Math.ceil(dt / HR) // because I want to switch the hour as soon as first millisecond of that hour passes
Run Code Online (Sandbox Code Playgroud)
但殊不知这dt / HR其实并不是整整一个小时5721214.962222222,而此时的时间我已经预料到了5721215。
let something = dt % HR / 1000 / 60 // 57.73333333 minutes
Run Code Online (Sandbox Code Playgroud)
最后,我使用所有计算的Date.UTC相应getUTC...方法来解决这个问题,但我仍然想了解更多相关信息。
所以显然,只有在花费了不成比例的时间之后,才发现我使用了错误的谷歌搜索查询GMT+0057,其中UTC+0057会给我一个谷歌搜索页面底部的点击。无论如何,由于0057谷歌搜索上没有足够的结果,而且每个国家/地区都有自己奇怪的时区偏移,所以我仍在回答这个问题,以便当我所在国家/地区的其他人偶然发现这个问题时,答案很容易获得!
从唯一的搜索结果中,我会得到这个 SO 答案Parsing Historical UTC date times gets an odd time zone shift
\n最终到 Brian Roemmele 撰写的这篇关于 huffpost 的文章时区是如何、何时以及为何创建的?
\n /edit \xc2\xa0\xc2\xa0\xc2\xa0 这更好,YouTube \n\n时间和时区的问题 - Computerphile
\n\n
无论如何,简而言之:明显的奇怪之处在于,在某些日期(大约 1900 年)之前,每个国家/地区都不同,这些国家甚至城市将根据当地太阳正午使用自己本地维护的时间,因此偏移量如 +00 :57、+10:04:52、+6:55:25 很常见。在每个国家的历史上的某个时刻,这种情况都发生了变化,时间必须立即移动几分钟甚至一整天来适应这种情况。
\n有关更多信息,请阅读上面链接的《赫芬顿邮报》文章以及 Jon Skeet 的精彩回答浏览器、时区、Chrome 67 错误(历史时区更改)
\n所以现在回想起来,很高兴timestamp这些时间转移和 JavaScript 的Date()对象足够友善地用它的各种方法为我们处理Date.UTC()这个.getHours()问题.getUTCHours()。
其他资源:
\n Kdy za\xc4\x8d\xc3\xadn\xc3\xa1 a kon\xc4\x8d\xc3\xad letn\xc3\xad \xc4\x8das @ kalendar.beda.cz
\n时区数据库@github
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |