Почему эта операция с датой (количество дней между двумя датами) возвращает это значение?

Согласно этот вопрос, я написал «мой код» (без Math.abs он мне не нужен):

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "09", "30"); // 30 september 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

и выдает 2 (правильно).

Теперь, если я сделаю это:

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "10", "01"); // 01 october 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

он напечатает 4. Почему 4? Должно быть 3 ... Вы знаете об этой проблеме?

0
задан Community 23 May 2017 в 09:59
поделиться