539 Stimmen

Vergleich nur des Datumsteils ohne Zeitvergleich in JavaScript

Was ist mit dem unten stehenden Code falsch?

Vielleicht wäre es einfacher, nur das Datum und nicht die Uhrzeit zu vergleichen. Ich bin mir auch nicht sicher, wie man das macht, und ich habe gesucht, aber ich konnte mein Problem nicht genau finden.

Übrigens, wenn ich die beiden Daten in einer Warnmeldung anzeige, sind sie genau gleich.

Mein Code:

window.addEvent('domready', function() {
    var now = new Date();
    var input = $('datum').getValue();
    var dateArray = input.split('/');
    var userMonth = parseInt(dateArray[1])-1;
    var userDate = new Date();
    userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());

    if (userDate > now)
    {
        alert(now + '\n' + userDate);
    }
});

Gibt es eine einfachere Möglichkeit, Daten zu vergleichen, ohne die Uhrzeit anzugeben?

8 Stimmen

date1.toDateString() === date2.toDateString()

0 Stimmen

Von den Toten auferstanden: Ich erhalte fehlerhafte Ergebnisse von date.setFullYear(yyyy,mm,dd) Wenn ich toSting auf das Datum anwende, wird der Monat um 1 erhöht. Getestet auf dieser Seite Link sowohl in FireFox als auch in Edge.

0voto

rpf3 Punkte 571

Eine Option, die ich letztendlich verwendet habe, war die Verwendung der diff Funktion von Moment.js . Durch den Aufruf von etwas wie start.diff(end, 'days') können Sie den Unterschied in ganzen Tagen vergleichen.

0voto

user2849789 Punkte 59

Sie können fp_incr(0) verwenden. Damit wird der Zeitzonenteil auf Mitternacht gesetzt und ein Datumsobjekt zurückgegeben.

0voto

Hiran D.A Walawage Punkte 1734

Das wird helfen. Ich habe es so hinbekommen.

var currentDate = new Date(new Date().getFullYear(), new Date().getMonth() , new Date().getDate())

0voto

R K Sharma Punkte 815

Ich weiß, dass diese Frage bereits beantwortet wurde und dass dies vielleicht nicht der beste Weg ist, aber in meinem Szenario funktioniert es perfekt, also dachte ich, es könnte jemandem wie mir helfen.

wenn Sie date string como

String dateString="2018-01-01T18:19:12.543";

und Sie wollen nur den Datumsteil mit einem anderen Date-Objekt in JS vergleichen,

var anotherDate=new Date(); //some date

dann müssen Sie convert el string a Date Objekt durch Verwendung von new Date("2018-01-01T18:19:12.543");

und hier ist der Trick :-

var valueDate =new Date(new Date(dateString).toDateString());

            return valueDate.valueOf() == anotherDate.valueOf(); //here is the final result

Ich habe verwendet toDateString() de Date object von JS, die nur die Datumszeichenfolge zurückgibt.

Hinweis: Vergessen Sie nicht, die .valueOf() Funktion beim Vergleich der Daten.

mehr Informationen über .valeOf() ist hier Referenz

Viel Spaß beim Codieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X