我的日期時間作爲UTC存儲在數據庫中。當他們被髮送到客戶端時,我想將它們轉換爲當地時間。將UTC轉換爲本地時間在javascript中不起作用
的Javascript接收一個給定的日期時間爲一個字符串,它看起來像這樣:
2016-09-29T19:13:40
如果我跑弦上我得到這樣的輸出new Date('2016-09-29T19:13:40')
:
Thu Sep 29 2016 19:13:40 GMT-0400 (Eastern Daylight Time)
雖然 - 0400偏移量存在,它不會改變時間。由於UTC偏移量不會顯示給用戶,因此它看起來像時間戳已經關閉了4個小時。
相反,如果我這樣做: new Date('2016-09-29T19:13:40').toISOString();
輸出是:
2016-09-29T23:13:40.000Z
正如你可以看到它實際上是由4調整時間,並消除了偏移。
如何當我喂javascript的UTC日期時間轉換爲本地所有它所做的是添加一個偏移量,但是當我餵它它認爲是一個本地日期時間它,並要求它轉換爲UTC它實際上調整時間?
我該如何調整UTC日期時間到本地調整本地UTC的方式?
編輯
這裏有一個小提琴:https://jsfiddle.net/qjmfLu67/1/
我越來越IE11和Chrome之間的不同的行爲。 IE11不會將UTC轉換爲本地。 Chrome會將UTC轉換爲本地,並且如果它將日期識別爲UTC,那麼當您運行toISOString
時,它不會調整任何內容。
無法重現,我'GMT + 0200'和它的變化之日起對我蠻好,結束了'21:13:40'等 – adeneo
我的控制檯上運行它,我得到這個:'new Date('2016-09-29T19:13:40') Thu Sep 29 2016 16:13:40 GMT-0300(E.南美標準時間)' –
需要更多的上下文 - 您是否試圖運行這在你的瀏覽器?另外,你的「逆向」例子實際上只是和你的初始陳述一樣作出相同的假設。 –