2010-05-02 16 views
18

Powiel możliwe:
Compare 2 dates with JavaScriptdata JavaScript porównanie

nie robiłem dużo JavaScript. Próbuję porównać dwie daty. Od jconsole:

a = ["01/01/2010","01/02/2010","01/03/2010"] 

date1 = new Date('01/02/2010') 
Sat Jan 02 2010 00:00:00 GMT-0800 (PST) 

date2 = new Date(a[1]) 
Sat Jan 02 2010 00:00:00 GMT-0800 (PST) 

date1 == date2 
false 

Czy ktoś może mi powiedzieć, dlaczego to nie pasuje?

+7

Warto zwrócić uwagę, że zarówno '> =' i '<=' 'return TRUE w w tym przypadku, ale '==' daje 'fałsz'. Kolejny cud JavaScript. – Kobi

Odpowiedz

38

Twoje porównanie zwraca wartość false, ponieważ date1 i date2 są po prostu odniesieniami do różnych obiektów i faktycznie porównujesz te odniesienia.

Aby wykonać prawidłowe porównanie wartości dat, można użyć metody getTime() następująco:

date1.getTime() === date2.getTime(); // returns true 
+1

ok dzięki. Zatem "===" również porównuje typ. Czy '<=' and '> =' również porównać typ? – user290870

+1

@ ash34: Tak, ogólnie zaleca się używanie '===' zamiast '=='. Możesz również sprawdzić to odwołanie: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators. Przede wszystkim zapisz część, w której jest napisane: "Dwa obiekty są ściśle równe, jeśli odnoszą się do tego samego obiektu." ... Sprawdź również opis różnych operatorów porównania. –