2 Stimmen

Wie kann man feststellen, ob 2 Datumsobjekte gleich sind?

Dies ist meine 1. Frage in Stackoverflow.

var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);

natürlich valueOf(date1)==valueOf(date2)

aber warum Datum1!=Datum2

oder sagen wir, wie man 2 Datumsobjekte bestimmt, wenn sie einander gleich sind.

Datum ist ein js-Objekt

5voto

Yoshi Punkte 53331

Javascript-Objekte sind nur dann gleich, wenn sie sich auf dieselbe Objektreferenz beziehen. Das ist in Ihrem Code nicht der Fall.

(Referenz: Wie lautet die Standarddefinition der Objektgleichheit für "=="? )

Edit: Mit ein wenig Schriftgießen kann man das machen:

var str="Oct 13,2011";
var date1 = new Date(str);
var date2 = new Date(str);

console.log(+date1 == +date2); // true

2voto

TheOneTeam Punkte 24512

== o === vergleicht Objektreferenzen.

Datum1 und Datum 2 werden aus unterschiedlichen Referenzen erstellt. Daher sind sie nicht gleich.

Datum1 und Datum2 in einen primitiven Datentyp umwandeln und vergleichen

date1.getTime()=== date2.getTime()

Ergebnis : Wahr

1voto

joth Punkte 1452

Verwendung von == funktioniert im Allgemeinen nicht, da es das Objekt Identitäten keine Werte.

Die Verwendung des + Präfix oder getTime() vor dem Vergleich in Millisekunden zu konvertieren, kann auch fehlschlagen, wenn Ihre Datumsobjekte eine Zeitkomponente haben und Sie nur ihre Datumsanteile vergleichen wollen. (Lassen Sie sich nicht dazu verleiten, nach dem toDate() Methode, da es sich um den Tag des Monats handelt und Monat und Jahr verworfen werden!).

Dies scheint einer der wenigen Fälle zu sein, in denen toDateString() ist nützlich, um eine knappe Lösung ohne zusätzliche Bibliotheken zu erhalten.

var date1=new Date("2014-12-10");
var date2=new Date("2014-12-10T01:00");

+date1 == +date2
>false

date1.getTime() == date2.getTime()
>false

date1.toDateString() == date2.toDateString()
>true

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