我一直在這個問題上撞了一天,進入源代碼,並且這個看起來是與真棒JavaScript的一個問題moment.tz庫:moment.tz設置「Etc/GMT [+ | - ] HH:MM」時區問題
每當我通過在「ETC/GMT 時間價值」時區標識符,返回moment.tz對象回來了什麼,我認爲是一個格式(「Z」)值乘以-1。
實施例:
var pacificTime = moment.tz("2016-09-29 21:00:00","America/Los_Angeles");
pacificTime.format("YYYY-MM-DD HH:mm:ss Z z");
輸出: 「2016年9月29日21點00分00秒-07:00 PDT」
所有如本文中所預期的。
現在,使用相同的時區(GMT-7):
var GMT_minus_7 = moment.tz("2016-09-29 21:00:00","Etc/GMT-7");
GMT_minus_7.format("YYYY-MM-DD HH:mm:ss Z z");
輸出: 「2016年9月29日21點00分○○秒07:00 GMT-7」
粗體值總是我認爲應該是的負值:傳入「Etc/GMT + 5」會返回「-5:00」值。
這是造成我頭疼,因爲網頁我的工作有日期/時間記錄記錄整數「GMT偏移」值,我只是變成「ETC/GMT」 + offset_value和通進入moment.tz做一個時區轉換。然後我需要對這個值進行進一步的操作(添加日期,顯示「Z」格式的值等),但是這個問題阻礙了進一步的工作。
這是一個用moment.tz解析「Etc/GMT」時區值的缺陷,還是我缺少關於時區格式化的基本知識?
我做了一個進一步的測試,它似乎是一個格式化錯誤。TZ;我跑了以下測試: 'GMT_minus_7.utc()格式( 「YYYY-MM-DD HH:MM:SS Z Z」)' ,並獲得響應 「2016年9月29日14:00 :00 +00:00 UTC「 UTC轉換正確地從21:00減去7小時,直到14:00。所以看起來這個用例的「Z」值的格式可能不正確。 –
WRT你的評論 - 你叫'.utc()',所以之後的任何事情都會用UTC,即'+00:00'。 –