Mongodb以UTC存儲日期對象。我需要根據「今天」查詢客戶端輸入的任務。今天不同,從用戶的角度來看,誰可以在東部時區或太平洋。這是我遇到的問題:根據客戶端日期查詢mongodb日期
記錄輸入爲「2017-05-10 15:15:11.283Z」。當我晚上晚些時候查詢服務器時,服務器日期已經是2017-05-11,但從客戶的角度來看,它仍然是2015-05-10。
我需要找到客戶端輸入的所有任務「today」。
我嘗試這樣做:
let start = new Date();
start.setHours(0,0,0,0);
let end = new Date();
end.setHours(23,59,59,999);
不過,雖然白天(當日)的作品,它沒有顯示記錄時,客戶端查詢到了晚上,但在午夜之前。
基於下面的意見和我自己的頭腦風暴,我現在傳遞客戶端日期到服務器上,並轉換爲UTC,像這樣:
let clientDate = req.params.month +'/'+ req.params.date +'/'+ req.params.year; //'5/10/2017'
console.log('clientDate ' + clientDate);
let start = new Date(clientDate);
start.setHours(0,0,0,0);
start = convertDateToUTC(start);
let end = new Date(clientDate);
end.setDate(end.getDate() + 1); //need this, otherwise queries next day
end.setHours(0,0,0,0);
end = convertDateToUTC(end);
console.log('start ' + start +' end ' + end);
return Taks.find({goalId: {$in: goalIds}, createdAt: {$gte: start, $lt: end}}).lean() //only today
//using function found on stack overflow
function convertDateToUTC(date) {
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
}
它正常工作,它只是似乎很難提供客戶端的日期到服務器。
您應該通過客戶端時區並考慮到查詢 –
您是否轉換爲UTC? – thedarkcoder