我有一個時區的ISO時間戳:如何在Javascript中給定時區格式化日期?
> let datestring = "2016-07-15T09:20:32.730689-04:00";
我想同時保持時區將其格式化爲人類可讀的格式,如「2016年7月15日,09:20」。
我想這第一:
> new Date(datestring).toString()
"Fri Jul 15 2016 15:20:32 GMT+0200 (CEST)"
> new Date(datestring).toISOString()
"2016-07-15T13:20:32.730Z"
當然,這不能做什麼,我想是因爲紀元以來new Date()
只存儲毫秒,-04:00
時區進行解析後回落。好的。
我還了解到:使用
toString()
格式W/R/T我的本地時區,類似於asctime
格式,toISOString()
格式W的從ISO格式/ R/T UTC 8601.
兩者看起來都很有幫助,所以我們來看看庫。
我想接下來的事情是moment
:
> moment(datestring)._tzm
-240
沒關係,時刻不會失去我的約會的時區!這很好,我希望我可以在Python中使用像datetime
對象那樣的moment
對象。那麼我如何格式化它?
> moment(datestring).toString()
"Fri Jul 15 2016 15:20:32 GMT+0200"
> moment(datestring).toISOString()
"2016-07-15T13:20:32.730Z"
哦,這些看起來像Moment剛剛轉發請求到日期時間。讓我們嘗試一下然後:
moment(datestring).format("MMM D YYYY, HH:mm")
"Jul 15 2016, 15:20"
格式看起來不錯,但這是什麼15:20?哦,那是我當地的時間。看起來像format()
也假定我想忽略日期時間的解析時區偏移量,我更喜歡我的本地時區。這裏沒有運氣。
但有moment().utcOffset
,讓我來指定一個給定的時區偏移:
> let m = moment(datestring)
> m.utcOffset(m._tzm).format("MMM D YYYY, HH:mm")
"Jul 15 2016, 09:20"
耶,它的作品!不過,我沒有看到這_tzm
任何地方記錄,看起來我現在正在搞moment
內部。
什麼是「通過這本書」的方式來實現這一目標?
這可以在沒有moment
的香草js中完成,假設我對iso
格式很好嗎?
在香草js中很難做到這一點。你見過[時刻時區](http://momentjs.com/timezone/)嗎?這可能會有所幫助。 –
當我希望能夠說「在美國/東部顯示這個日期」時,我通常使用'moment-timezone'。這是一個不同的情況:我已經有了所需時區偏移的時間戳。 – Kos