JavaScript日期减法混淆

时间:2015-08-11 08:44:18

标签: javascript date

我有以下javascript。我基本上想要计算两个日期之间的时间。但2015年2月的计算似乎是错误的。

<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>

2 个答案:

答案 0 :(得分:2)

第3个月是4月。第二个月是三月。月份从零开始。

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

答案 1 :(得分:2)

夏令时必须在3月份开始

这个数字应该是30.958333333333332

作为其他“答案”状态,月份为零,解释超过28天,其余部分由DST造成的1小时损失解释

所以,完整的解释是

  • 您正在计算4月1日至3月1日期间的天数= 31
  • DST开始,因此您没有31天,3月份有30.958333333333332天