javascript中的日期奇怪行为

时间:2013-12-18 04:52:40

标签: javascript

我只是在进行日期比较,但是面对日期很奇怪。我的代码类似于下面的代码

var now = new Date(); 
var from = new Date(2013,12,18,7,41,25,0);
var untill = new Date(2013,12,18,8,42,25,0);

if(now <= untill && now >= from){
...
}else{
....
}

这种情况在适当的时候,例如2013/12/18 7:42:00不起作用。 我用console.log进一步调查它:

console.log(from);
console.log(now);
console.log(untill);
输出和以下一样奇怪:

Date {Sat Jan 18 2014 07:41:25 GMT+0330 (Iran Standard Time)}
Date {Wed Dec 18 2013 08:20:22 GMT+0330 (Iran Standard Time)}
Date {Sat Jan 18 2014 08:42:25 GMT+0330 (Iran Standard Time)}

正如你所看到的那样,即使进入2013/12/18,它仍然是2014年1月18日的起始和变量的日期

请帮我弄清楚为什么javascript会这样做。

3 个答案:

答案 0 :(得分:2)

month参数使用从0开始的索引。

使用var from = new Date(2013,11,18,7,41,25,0); 12月。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:0)

在Javascript月份中有0个索引,因此1月为0,12月为11。

将您的代码更改为

var from = new Date(2013,11,18,7,41,25,0);
var untill = new Date(2013,11,18,8,42,25,0);

答案 2 :(得分:0)

您之所以这样,是因为MonthDay of the week这些基于0-based indexing

您可以在此处详细了解DateDate in Javascript