我使用FormatJS library along with Handlebars來顯示過去發生的事件列表。我在我的服務器的REST API上調用一個端點,它返回Json中的事件列表,併爲每個事件顯示日期時間。 ATM我使用GMT時區將日期時間保存在數據庫中。使用REST Api和JS時區問題
所以,當我得到我的JSON,我處理日期時間是這樣的:
{{formatRelative commentDate}}
我的問題是,因爲日期時間在GMT放養,它們也顯示這樣的。例如,因爲我在GMT + 2時區,所以只要創建新事件並顯示在列表中,我就會看到它「在2小時前發生」,而它應該是「幾秒前」。
那麼,有沒有一種方法可以處理這個問題?我在保存日期格林尼治標準時在我的數據庫中犯了錯誤,如果是這樣,你將如何處理來自不同時區的日期時間並將它們顯示給其他時區中的人?
當然,我可以自定義formatRelative
幫手與getTimezoneOffset
一起玩,並得到想要的結果,但我想知道是否有更好的辦法。
非常感謝!
以UTC爲單位存儲日期通常是首選,因爲它可以簡單地轉換爲任何其他時區。另外,ECMAScript Date對象的核心是UTC。你的問題似乎是關於將「JSON」日期轉換爲本地日期,但是你不會告訴你如何做到這一點。 – RobG
@RobG因爲我沒有轉換任何東西!獲取包含日期時間的Json,格式爲「2016-02-28 10:15:53」 - 這就是UTC時間,直接在'formatRelative'助手中使用它(如圖所示),而不再做任何事情。 –
在體系結構的更多中心部分的世界時間是一個很好的方法:http://currentmillis.com/standard/specification/c/我不認爲你犯概念錯誤,這聽起來像你的抵消失去了某個地方。 http://formatjs.io/handlebars/#formatRelative讓我相信實際上被格式化的時間被定義爲Epoch以來毫秒數的時間,但是我看到你正在返回一個人類可讀的時間。是否有一個約定,服務器返回的時間被解釋爲UTC? (因爲你沒有指定時區,不應該有一個UTC或GMT到底?) – Sandman