2013-07-11 186 views
6

我想知道如果這是正常的,或者如果我錯過在架構設置或查詢過程的東西:貓鼬將存儲的UTC日期轉換爲當地時間?

我的應用程序,而貓鼬,正確地存儲日期在MongoDB中UTC。這可以通過mongo shell查看文檔來確認。當我通過貓鼬從mongodb中檢索文檔時,日期現在是當地時間。

蒙戈外殼:查詢結果的 http://cl.ly/image/2m3P212o0i2x

的console.log輸出: http://cl.ly/image/3W2q3b1R0F3q

有沒有辦法查詢時有貓鼬保持日期UTC?

回答

6

Mongoose和node.js對您的日期沒有做任何事情,只不過是JavaScript Date類型產生本地時間字符串,當你打電話給toString()時,即使它實際上包含UTC的時間。

如果您需要UTC時間字符串,請在您的Date對象上明確呼叫toUTCString()

+1

哎呀。通過幾種不同的方式記錄查詢結果後,我發現它是console.log,它顯示當地時間的日期,因此很多時候調用toString()。很高興知道未來......感謝您的迴應。 –

1

時間戳以agnostically的形式存儲在時區中,作爲unix時間戳。此時間戳將跨時區工作,並且節點使用您當前的時區對其進行解釋。您可以使用getUTC *方法從日期對象中檢索UTC值,例如get getUTCHours()

+1

感謝您的迴應,我明白我可以將其轉換爲UTC並從那裏使用它。我似乎有點奇怪,貓鼬和/或節點會自動將它帶入當地時間。也許更好的問題是:我可以明確告訴節點使用UTC ...類似於PHP或其他語言中的date_default_timezone_set函數嗎? –

+1

@DM你用UTC或當地時間把東西放入貓鼬中嗎?您可以使用process.env.TZ更改節點的時區,但不建議使用。 https://github.com/joyent/node/issues/3286 – WouterH

相關問題