Ich habe diesen Javascript-Code:
var date1 = new Date();
var date2 = new Date(date1.toString());
console.log(date1 === date2); //false
console.log(date1); //Fri Oct 30 2015 16:55:56 GMT+0200 (GTB Standard Time)
console.log(date2); //Fri Oct 30 2015 16:55:56 GMT+0200 (GTB Standard Time)
console.log(date1 == date2); //false
console.log(date2 - date1); // -213
Ich würde erwarten date2
, ähnlich zu sein date1
, da date2
es sich um ein Date
aus dem string
Ergebnis von date1
's erstelltes handelt toString()
. Warum ist das nicht der Fall?
console.log(date1 == date2); //false
Es sind zwei Objekte mit unterschiedlichen Identitäten, selbst wenn sie denselben Wert haben würden. Um Daten auf Äquivalenz zu vergleichen, wandeln Sie sie in numerische Zeitstempel um:
date1.getTime() == date2.getTime()
date1.valueOf() == date2.valueOf()
+date1 == +date2
Number(date1) == Number(date2)
console.log(date2 - date1); // -213
toString()
ignoriert den Millisekunden-Teil. Versuchen Sie toISOString()
stattdessen, mit zu stringifizieren . Oder verwenden Sie einfach den ganzzahligen Zeitstempel für die Serialisierung.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen