Ich versuche, alle Datensätze mit "Datum" -Feld zwischen StartDate und EndDate zu bekommen.Mongodb Zeitzone Problem beim Filtern nach Datum
ich die DB mit diesem bin Abfrage (Aufzeichnungen von Anfang des Monats bis heute zu erhalten):
var startDate = new Date(2017,09,1);
var endDate = new Date(2017,09,7);
//console.log(startDate) = Sun Oct 01 2017 00:00:00 GMT-0300 (BRT)
//console.log(endDate) = Sat Oct 07 2017 00:00:00 GMT-0300 (BRT)
Sale.find({date:{"$gte":startDate,"$lt":endDate}},function(err, sales){
}
Aufzeichnungen mit Daten zwischen 10/02 und 10/07 und zurückgegeben werden, aber Aufzeichnungen mit Datum 10/01 werden nicht zurückgegeben. Hier ist das Datumsfeld dieser fehlenden Datensätze:
"date": {
"$date": "2017-10-01T23:00:00.000Z"
}
ich die Stunden bis 23 zu sehen, ob es einen Unterschied machen würde (Zeitzone, usw.), aber es kam nicht.
Wenn ich das Startdatum auf 30 September 23 September, nichts einstellen. Stunde 22, 21, nichts. Wenn startDate 30. September, Stunde 20, Bingo wird, werden die Datensätze zurückgegeben.
Dies ist wahrscheinlich ein Zeitzonenproblem, aber ich kann nicht identifizieren, wo und wie.
In JS, 'new Date (2017,09,1) ; 'returns' Wed Nov 01 2017 00:00:00 GMT-0400 (EDT) 'weil 0 Januar ist. Das erklärt jedoch nicht das Verhalten, das Sie sehen. –
In welcher Zeitzone werden Ihre Daten in MongoDB geschrieben? UTC oder lokal? –
Lokal, aber so sollte das neue Date() Objekt richtig sein? Ich habe die Frage mit der console.log der Daten aktualisiert. –