2014-05-09 61 views
0

我的應用程序有幾個日期選擇器,對於他們我使用日期格式作爲DD/MM/YYYY 然後我將這個日期發送到我的nodejs後端,它將數據對象存儲在mongodb中。以mongodb格式存儲日期

將來我的應用程序需要根據日期範圍過濾數據。由於這個原因,我不想將日期存儲爲字符串。相反,我想以允許我對集合執行基於範圍的查詢的格式存儲它們。

考慮到我無法更改前端的日期格式,我的最佳選擇是什麼?

如果有人能夠爲我清楚地理解這個概念提供詳細的答案,我會非常感激。

+1

使用本地日期的對象爲您所選擇的語言實現時要查詢,他們會正確序列化到MongoDB。在文檔中非常清楚地陳述。 –

回答

1

在您的nodejs後端,您可以在將字符串日期「DD/MM/YYYY」轉換爲Date對象之後再將它放入mongodb中。是這樣的:

var dateStr = "15/12/2013"; // the 15th of Dec, 2013 
var dateArr = dateStr.split('/'); 

// new Date(YYYY, MM, DD); // note that month starts from 0, so 
// you have to subtract 1 
var date = new Date(dateArr[2], dateArr[1] - 1, dateArr[0]); 
console.log(date); // output: Sun Dec 15 2013 00:00:00 GMT-0800 (PST) 

這個日期現在是一個Date對象,然後您可以保存在MongoDB中和按日期範圍以後需要

+0

嗨本答謝答覆。如果我需要節省時間以及格式:05/22/2014 12:00 PM? – beNerd

+0

你可以這樣做:var dateArr = dateStr.split(''); var dateParts = dateArr [0] .split('/'); var timeParts = dateArr [1] .split(':'); var amPm = dateArr [2]; var date = new Date(dateParts [2],dateParts [1] - 1,dateParts [0],timeParts [0] +(amPm ==='PM'?12:0),timeParts [1]); – Ben

+0

我嘗試了你建議的方法,在檢索後,我得到了以下日期:2015-10-12T19:08:00.000Z。現在我該如何將其轉換回原始形式。另一個問題是,我不明白它是如何從2014年成爲2015年的。你能解釋一下,如果不是對你有太大的困擾嗎? – beNerd

相關問題