日期顯示正確的日期我有存儲在我的UTC格式數據庫日期,並呼籲的JavaScript存儲爲UTC對服務器
element.createdDate = new Date(element.createdDate.toString());
結果顯示錯誤的日期。
調用
element.createdDate = new Date(element.createdDate.toUTCString());
回報什麼。我如何從UTC顯示正確的時間?
日期顯示正確的日期我有存儲在我的UTC格式數據庫日期,並呼籲的JavaScript存儲爲UTC對服務器
element.createdDate = new Date(element.createdDate.toString());
結果顯示錯誤的日期。
調用
element.createdDate = new Date(element.createdDate.toUTCString());
回報什麼。我如何從UTC顯示正確的時間?
嘗試用日期格式/此刻他們會幫助你。它們很容易使用
請僅使用* Post answer *按鈕才能得到實際答案。一旦你有[足夠的代表](https://stackoverflow.com/help/privileges/comment),你就可以添加評論的問題。 –
看起來你的json響應包含一個字符串值,它是以UTC格式的ISO8601格式,然後你要從它們創建Date
對象。
你的這部分代碼是罰款:
if (element.createdDate) element.createdDate = new Date(element.createdDate.toString());
Date
對象是正確的。.toString()
,因爲該值已經是一個字符串。這是多餘的。你的這部分代碼的問題是:
console.log("javascript date: " + new Date(element.depositDate.getUTCDate().toString()));
getUTCDate
函數返回月份的只是日期。不要使用它。Date
對象,最終都會創建一個Date
對象,並且您依賴於隱式字符串轉換來輸出它。這在不同的瀏覽器中會有不同的行爲。考慮console.log(new Date())
:
在Chrome中,這個記錄類似Fri Mar 17 2017 12:14:29 GMT-0700 (Pacific Daylight Time)
我的電腦上。這就好像我調用console.log(new Date().toString());
它採用RFC 2822格式(但不完全),並且在本地時間表示。
在Firefox中,這個日誌類似2017-03-17T19:14:46.535Z
。這就好像我叫console.log(new Date().toISOString());
它是ISO8601格式,用UTC表示。
問題是,不要依賴隱式的未定義行爲。如果您必須使用Date
對象,則應該使用console.log(element.createdDate.toISOString())
來查看UTC時間的ISO8601表示形式。
如果你打算用日期和時間做很多事情,你可能更喜歡使用一個庫,例如Moment.js,它可以使這樣的任務更清晰。
如果它是從數據庫返回的字符串值,那麼調用'getUTCDate()'應該失敗,不會返回月份的日期... –
這是真的。此外,它不會使圖片中顯示的輸出,所以我認爲OP必須根據他在[早先的屏幕截圖]中顯示的代碼(https://i.stack.imgur.com/ vgUjT.png),然後在編輯中將其刪除。 –
我有存儲在我的UTC格式數據庫日期,並呼籲
element.createdDate = new Date(element.createdDate.toString());
結果顯示錯誤的日期。
2016-10-11T00:00:00Z
和Mon Oct 10 2016 20:00:00 GMT-04:00 (EDT)
在時間上是完全相同的。唯一的區別是,一個以ISO 8601擴展格式顯示,時區偏移量爲00:00,另一個以RFC 2822(like)格式顯示,時區偏移量爲-04:00(並假設EDT區域爲局部區域)。
調用
element.createdDate = new Date(element.createdDate.toUTCString());
回報什麼。
這是不尋常的。通常它會返回一個字符串或一個錯誤,但沒有一個工作示例或任何代碼來提供上下文,所以不可能說出原因。
如何從UTC顯示正確的時間?
您尚未指定「正確」是什麼。您在同一時刻顯示日期和時間,只是以不同的格式和時區顯示。
您在這裏提供的信息不足以幫助我們。你說你在你的數據庫中有UTC的數據,但是你顯示的是一個JS'Date'對象。你是怎麼到達那裏的?什麼數據發送到您的JS代碼?你如何解析它以得到一個'Date'對象?另外,你的輸出顯然也是一個Date對象。這是你的預期嗎?如果不是,你期望輸出什麼? –
此外,請確保您瞭解「Date」對象的工作原理 - 它在內部跟蹤UTC。其中一些函數保留在UTC(如'toUTCString'或'getUTCHours')中,一些函數轉換爲本地時間'(如'toString'或'getHours')。如果你只是'console.log'這個對象而不明確地調用一個發出字符串的函數,那麼這個實現是不確定的,並且在不同的瀏覽器中有所不同(有些會給出本地時間,有些給出UTC時間)。 –
日期是從角度/內核中建立的日期。元素只是forEach循環的每次迭代,而createdDate是存儲在mongo中的UTC日期。生病添加了全功能的圖片 – mrusername