2016-07-27 163 views
0

我在節點6.3.0上使用moment-timezone 0.5.1
我主要處理的是香港時區,它一直在使用GMT+0800since 1904
在此之前,它是使用GMT+0736since 1885爲什麼在同一時區內,時區會顯示不正確的GMT偏移時間戳?

然而,出於某種原因,moment-timezone格式化劃時代附近的一些日期顯示GMT+0900,這似乎並沒有在歷史上的任何基礎。

我似乎無法找到該模式,也不能在更近的時間戳中重現此問題。

時代後

moment.tz(123456780, 'Asia/Hong_Kong').toString() // 'Fri Jan 02 1970 18:17:36 GMT+0800' 
moment.tz(1234567800, 'Asia/Hong_Kong').toString() // 'Thu Jan 15 1970 14:56:07 GMT+0800' 
moment.tz(5999999999, 'Asia/Hong_Kong').toString() // 'Wed Mar 11 1970 18:39:59 GMT+0800' 
moment.tz(9000000000, 'Asia/Hong_Kong').toString() // 'Wed Apr 15 1970 12:00:00 GMT+0800' 
moment.tz(9300000000, 'Asia/Hong_Kong').toString() // 'Sat Apr 18 1970 23:20:00 GMT+0800' 
moment.tz(12345678000, 'Asia/Hong_Kong').toString() // 'Sun May 24 1970 06:21:18 GMT+0900' 
moment.tz(9999999999, 'Asia/Hong_Kong').toString() // 'Mon Apr 27 1970 02:46:39 GMT+0900' 
moment.tz(9900000000, 'Asia/Hong_Kong').toString() // 'Sat Apr 25 1970 23:00:00 GMT+0900' 
moment.tz(9500000000, 'Asia/Hong_Kong').toString() // 'Tue Apr 21 1970 07:53:20 GMT+0900' 
moment.tz(9400000000, 'Asia/Hong_Kong').toString() // 'Mon Apr 20 1970 04:06:40 GMT+0900' 
moment.tz(9400000000, 'Asia/Hong_Kong').toString() // 'Mon Apr 20 1970 04:06:40 GMT+0900' 

之前劃時代

moment.tz(-9000000000000, 'Asia/Hong_Kong').toString() // 'Thu Oct 19 1684 15:36:42 GMT+0736' 
moment.tz(-90000000000000, 'Asia/Hong_Kong').toString() // 'Sun Jan 06 -0882 15:36:42 GMT+0736' 
moment.tz(-500000000000, 'Asia/Hong_Kong').toString() // 'Sat Feb 27 1954 07:06:40 GMT+0800' 
moment.tz(-100000000000, 'Asia/Hong_Kong').toString() // 'Mon Oct 31 1966 22:13:20 GMT+0800' 
moment.tz(-900000000000, 'Asia/Hong_Kong').toString() // 'Wed Jun 25 1941 17:00:00 GMT+0900' 
moment.tz(-200000000000, 'Asia/Hong_Kong').toString() // 'Sat Aug 31 1963 13:26:40 GMT+0900' 
moment.tz(-800000000000, 'Asia/Hong_Kong').toString() // 'Sat Aug 26 1944 02:46:40 GMT+0900' 
moment.tz(-900000000000, 'Asia/Hong_Kong').toString() // 'Wed Jun 25 1941 17:00:00 GMT+0900' 

回答

2

看起來這也是一個歷史的答案,根據香港採用夏令時:

香港採用日光但在二十世紀七十年代,由於香港處於相對較低的緯度,政府認爲這些措施是不必要的。這種做法被淘汰在1979年

以快速瀏覽一下1941年和1942年之間的區別,這似乎是在那裏你看到+ 9 GMT + 8和GMT之間的切換:

moment.tz(new Date('1/1/1941'), 'Asia/Hong_Kong').toString() 
// 'Wed Jan 01 1941 16:00:00 GMT+0800' 

moment.tz(new Date('1/1/1942'), 'Asia/Hong_Kong').toString() 
// 'Thu Jan 01 1942 17:00:00 GMT+0900'