2016-12-01 193 views
1

我做new Date()然後將它保存到mongodb中,日期成爲UTC格式?datetime UTC轉換mongodb

我在插入mongodb時插入的日期時間不一樣,我該怎麼做才能解決這個問題?就像我在2016年1月12日創建文檔一樣,我選擇範圍從2016年1月12日開始,該記錄不存在。奇怪。

回答

0

正如documentation說:

蒙戈殼包覆與ISODate幫手Date對象。 ISODate使用UTC。

所以我最好的猜測是你的new Date()不是UTC。

Math.floor((new Date()).getTime()/1000)

爲在這裏看到:How do I get a UTC Timestamp in JavaScript?

然而,蒙戈是足夠聰明,解決這一切爲你,所以new Date()應該夠了。

要在mongo中查詢日期,您還可以使用純日期對象,而不需要將它們轉換爲ISOString。

將所有內容保留爲日期對象,並且它將按照您的意圖工作!

+0

所以基本上我不能做新的日期(),但Date.UTC(保存時區),如果我想使用mongodb? –

+0

雖然你不應該需要這個,但Mongo很聰明,可以爲你整理一切。你能告訴我們你插入的內容,以及mongo文檔中寫的是什麼? – xShirase

+0

如果是這種情況,爲什麼我應該有這個奇怪的錯誤? –

0

node.js new Date()對象的默認時區爲UTC(又名GMT)。

你應該這樣離開它,只是把它轉換到你的前端。瀏覽器中的Javascript可以自動將UTC時間戳轉換爲瀏覽器本地時區。

new Date(Date.UTC(saved-timezone)) 

How do you create a JavaScript Date object with a set timezone without using a string representation

+0

所以基本上我不能做新的日期(),但Date.UTC(保存時區),如果我想使用mongodb? –

+0

您總是希望以UTC保存日期,並在檢索後將它們轉換爲本地時區。只要將其保留爲UTC,並使用上面的代碼將時間轉換爲檢索後的本地時區。 – Porlune

+0

檢索後轉換前端的時間? –