Подтвердить что ты не робот

Две идентичные даты JavaScript не равны

Когда я создаю два идентичных объекта JavaScript Date, а затем сравниваю их, кажется, что они не равны. Как проверить, имеют ли две даты JavaScript одинаковое значение?

var date1 = new Date('Mon Mar 11 2013 00:00:00');
var date2 = new Date('Mon Mar 11 2013 00:00:00');
console.log(date1 == date2); //false?

JS Fiddle доступен здесь

4b9b3361

Ответ 1

Он выглядит это уже было рассмотрено.

Чтобы проверить, совпадают ли даты, они должны быть преобразованы в их примитивы:

date1.getTime()=== date2.getTime()
//true

Ответ 2

Прежде всего, вы делаете звуковую ошибку здесь, сравнивая ссылки. Посмотрите на это:

var x = {a:1};
var y = {a:1};

// Looks like the same example huh!
alert (x == y); // It says false

Здесь, хотя объекты выглядят одинаково, но они содержат разные слоты в памяти. Ссылка хранит только адрес объекта. Следовательно, обе ссылки различны.

Итак, теперь мы должны сравнивать значения, так как вы знаете, что сравнение ссылок здесь не будет работать. Вы можете просто сделать

if (date1 - date2 == 0) {
    // Yep! Dates are equal
} else {
   // Handle different dates
}

Ответ 3

Я сравниваю многие виды значений в цикле for, поэтому я не смог их оценить путем вычитания, вместо этого я закрыл значения для строки перед сравнением

var a = [string1, date1, number1]
var b = [string2, date2, number2]
for (var i in a){
  if(a.toString() == b.toString()){
    // some code here
  }
}