JS中Date时间设置溢出问题

在采购商财务电子钱包中提供了可查询最近一个月数据的功能:该功能会使用JS Date类型计算新的日期。

这里有一点需要注意:在设置日期时,date.setMonth(m);//m is from 0 to 11. 这里如果当前日期时2015年3月31日,date.setMonth(1);得到的结果是2015年3月3日。

对于最近一个月的定义如下:

1.上月无当日的(3月31日,2月无31日。闰年2月29也在考虑范围内)最近一个月为:当月1日~当前日。

2.其余(上月有当日) 最近一个月为:上月当日~当前日。

 

另:如下JS代码结算新日期会出错:

var year = 2015,month = 1,d = 1;//m is from 0 to 11

var date = new Date(); //当前日为2015年4月30.

date.setFullYear(year);

date.setMonth(month);//执行后日期变为2015年2月30.,2015年2月无此日期。28日为最后一天,30-28=2。延后2天得日期变为2015年3月2日。

date.setDate(d);//日期变为2015年3月1日

期望得到date为:2015年2月1日

实际得到date为:2015年3月1日.

 

同样的Date.setFullYear(),Date.setDate()都会出现时间溢出问题 

posted @ 2015-03-31 16:30  皮皮博文  阅读(895)  评论(0编辑  收藏  举报