Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сравнение дат в JavaScript результат отличается от ожидаемого

00 голосов
1
Написал простую проверку дат, вводимых в поле формы.
Даты должны различаться.
При вводе разных дат - работает, а при вводе одинаковых - нет.
Проверил на пустой страничке  вот таким кодом:  
Код
<sc ript type="text/javascript">
var d1= new Date(2012,6,9);
var d11= d1.toLocaleS tring();
var d2= new Date(2012,6,9);
var d22= d1.toLocaleS tring();
document.write(d1+"<br>");
document.write(d11+"<br>");
document.write(d2+"<br>");
document.write(d22+"<br>");
document.write("Меньше или равн.<br>");
document.write(d1<=d2);
document.write("<br>Больше или равн.<br>");
document.write(d1>=d2);
document.write("<br>Равны<br>");
document.write(d1==d2);
document.write("<br>Не равны<br>");
document.write(d1!=d2);
document.write("<br>");
</sc ript>

 

Получил на экран:
Mon Jul 9 00:00:00 UTC+0400 2012
9 июля 2012 г. 0:00:00
Mon Jul 9 00:00:00 UTC+0400 2012
9 июля 2012 г. 0:00:00
Меньше или равно
true
Больше или равно
true
Равны
false
Не равны
true

Т.е. две одинаковые даты - не равны.
Классический вопрос: что я делаю не так?
спросил 09 Июль, 13 от Tirkan (400 баллов)

1 Ответ

00 голосов
По стандарту ECMA-262, которому следует в том числе Javascript, при сравнении с помощью оператора == два объекта считаются равными только если они ссылаются на один и тот же объект (см. 11.9.3 1.f). В данном случае d1 и d2 — это два разных объекта и следовательно они не равны. С другой стороны, сравнение d11 и d22 будет вполне корректным.
ответил 09 Июль, 13 от SuPeRSID (180 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 26 Авг, 13 от Exumer (360 баллов)
0 голосов
6 ответов
спросил 19 Окт, 13 от Nemesida (240 баллов)
0 голосов
3 ответов
0 голосов
6 ответов
0 голосов
0 ответов