2016-12-12 5 views
0

30 января и 1 февраля, похоже, на високосные годы.Сравнение двух дат не влияет (влияние високосного года)

new Date(1972, 01, 30).getTime() == new Date(1972, 02, 01).getTime(); // true

30 января и 2 февраля, кажется, равных по невисокосных лет.

new Date(1973, 01, 30).getTime() == new Date(1973, 02, 02).getTime(); // true

1 февраля и 2 февраля, кажется, работает каждый раз.

new Date(1973, 02, 01).getTime() == new Date(1973, 02, 02).getTime(); // false new Date(1972, 02, 01).getTime() == new Date(1972, 02, 02).getTime(); // false

Looping более 19 лет: https://jsfiddle.net/rd1qe9bt/3/

Почему это работает, как это и я могу как-то дифференцировать эти даты?

+0

Вы проверили 'console.log (новая дата (1972, 01, 30))' и 'console.log (новая дата (1972, 02, 01))'? –

ответ

2

Ваши аргументы функции Date() немного выключены. Месяц работает от 0 до 11 с января по декабрь.

Когда ваши примеры модифицируются использовать правильный формат, они ведут себя, как ожидалось:

// comparing January 30, 1972 to February 1, 1972 
new Date(1972, 0, 30).getTime() == new Date(1972, 01, 01).getTime(); // false 

// comparing January 30, 1973 to February 2, 1973 
new Date(1973, 0, 30).getTime() == new Date(1973, 02, 02).getTime(); // false 

Аргументов для примеров сравнения 1-го и 2-го февраля был правильным, поэтому они работали каждый раз.