2015-08-11 4 views
0

У меня есть следующий javascript. Я в основном хочу рассчитать время, прошедшее между двумя датами. Но расчет за февраль 2015 года кажется неправильным.JavaScript вычитание даты путаница

<html> 
    <head> 
     <script> 
      var d1 = new Date(2015,03,01,12); 
      var d2 = new Date(2015,03,01,10); 

      var d3 = d1 - d2; 
      alert(d3/60000); //shows 120, which is correct 

      var d1 = new Date(2015,03,01); 
      var d2 = new Date(2015,02,01); 

      d3 = new Date(d1 - d2); 

      alert(d3/86400000); //shows 30.95 which is wrong 
     </script> 
    </head> 
    <body> 

    </body> 
</html> 
+0

Почему вы создаете 'Дату 'от даты разницы (' d3 = новая дата (d1 - d2); ')? – hindmost

ответ

2

Переход на летнее Должно быть ноги в течение марта

цифра должна была 30.958333333333332

, как и другими «ответ» состояния, Месяцы с нулем, который объясняет больше, чем 28 дней, остальное объясняется потерей 1 часов из-за летнее время

так, ПОЛНОЕ объяснение

  • вы подсчет количества дней между 1 апрелем и 1 марта = 31
  • DST начал, поэтому у вас нет 31 полных дней, у вас есть 30.958333333333332 дней в марте
+0

Правильный ответ 28, не объяснимый с помощью DST. –

+0

правильный ответ: 30.958333333333332, месяцы основаны на нулевом значении, и вы теряете час, когда DST пинает –

+0

Как ясно говорит OP, он пытается рассчитать количество дней в феврале. Таким образом, «правильный» ответ на проблему, которую он пытается решить, - это 28. –

2

Месяц 3 - апрель. Месяц 2 - март. Месяцы основаны на нуле.

var d1 = new Date(2015,02,01);  // March 1 
var d2 = new Date(2015,01,01);  // February 1 

d3 = new Date(d1 - d2); 

alert(d3/86400000);    //shows 28, which is correct 
Смежные вопросы