JS日期问题

 var date = new Date(2016,8,31);
    alert(date.getTime());
    var date2 = new Date(2016,9,01);
    alert(date2.getTime());

这俩毫秒数相同,为啥?
阅读 2.5k
3 个回答

跑下下面的代码:


var date = new Date(2016,8,31);
console.log(date);
var date2 = new Date(2016,9,01);
console.log(date2);

JS 中月份是从 0 开始,九月没有 31 号,跳到下一个月啦

月份是从0开始算的

var date = new Date(2016,8,31);  //表示9月31日,又因为9月只有30天,所以是10月1日
var date2 = new Date(2016,9,01); //表示10月1日
var date = new Date(2016,8,31);

Sat Oct 01 2016 00:00:00 GMT+0800 (中国标准时间)

var date2 = new Date(2016,9,01);

Sat Oct 01 2016 00:00:00 GMT+0800 (中国标准时间)

新手在设置日期时,常会出现上述问题:即月份认为是从1开始,实际上Date对象的第二个参数表示月份,从0开始计数。超出后将累计到年份上。故:

var date = new Date(2016,12,31);

Tue Jan 31 2017 00:00:00 GMT+0800 (中国标准时间)

将是2017-01-31。
出现这种误解,应该是第三个参数引起的,即天数是从1开始。但是天数可以为0,不过这时相当于前一个月的最后一天。如:

var date = new Date(2016,12,0);

Sat Dec 31 2016 00:00:00 GMT+0800 (中国标准时间)

此时是2016-12-31。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题