Ich bekomme ein SQL-Datum - NICHT Datetime - Objekt in meinen Javascript-Code geschoben, und ich muss sehen, ob es vor heute ist oder nicht. Hier ist der Code, den ich habe (der relevante Teil):Javascript Datum Vergleich verhält sich nicht wie erwartet
todaysDate = new Date();
todaysDate.setHours(0,0,0,0);
var date = Date.parse(row[3]);
// date.setHours(0,0,0,0);
if (date < todaysDate) {
alert("date is before today");
dueDate = '<small class="text-danger">';
} else {
alert("date is after today");
dueDate = '<small class="text-muted">';
}
Zeile [3] ist die Quelle des SQL-Datums. Also, das funktioniert gut für alles außer Daten, die heute sind. Ohne die kommentierte Zeile denkt es, dass alles mit dem heutigen Datum in der Vergangenheit liegt. Mit der kommentierten Zeile bricht mein Code ab. Irgendwelche Gedanken, wie das zu beheben ist? Ich bin mir nicht sicher, was ich falsch mache.
Danke!
heute sollte Text-Gefahr oder Text-stummgeschaltet werden? Hast du 'new Date (row [3])' ausprobiert? –
Das Analysieren von Zeichenfolgen mit dem Date-Konstruktor und * Date.parse * ist unzuverlässig und führt oft zu unerwarteten Ergebnissen. Es ist unmöglich zu sagen, was passiert, wenn Sie den tatsächlichen Wert von 'row [3]' nicht preisgeben.Beachten Sie, dass in Browsern, die ECMAScrip 2015 entsprechen, eine Zeichenfolge wie "2016-04-10" als UTC behandelt wird. Wenn Sie sich also westlich von UTC befinden, erhalten Sie möglicherweise ein Datum für den 9. April. Einige werden es weiterhin als lokal und einige als ungültig behandeln. – RobG
Yeah @RobG es ist das String-Format, das Sie erwähnt haben - YYYY-MM-DD, also denke ich, dass es das UTC-Problem ist, das Sie erwähnten. Ich überprüfe den Code, den du unten gepostet hast! Und Daniel, um zu klären, sollte heute gedämpft sein, nicht Gefahr. Ich möchte heute NICHT in diese erste if-Anweisung aufgenommen werden. – dangr