以这种方式计算的月数:
var start = new Date(d.getFullYear(),d.getMonth(),1);
var end = new Date(d.getFullYear(),d.getMonth()+1,1);
var daysInCurMonth = parseInt((end-start)/(1000*60*60*24));
d
是实际日期,对于3月它保持价值(来自FireBug控制台):
Date {Thu Mar 01 2012 00:00:00 GMT+0200}
parseInt((end-start)/(1000*60*60*24))
结果 30 ,但是
(end-start)/(1000*60*60*24)
结果 30.958333333333332
使用parseInt()
函数时,我希望舍入为 31 。
Math.round((end-start)/(1000*60*60*24))
结果 31 ,这在2012年3月是正确的。
在处理日期时依赖Math.round()
是否可以?
答案 0 :(得分:2)
您可以使用parseFloat
和Math.round
如果您需要下一个整数,可以使用Math.ceil
答案 1 :(得分:1)
答案 2 :(得分:0)
在处理日期时,依赖Math.round()是否可以?
不,不是!日期不是数字,today + 3600 * 24
并不总是等于tomorrow
。
要查找当月的日期,请使用Date object的以下属性:
如果对dayValue使用0,则日期将设置为上个月的最后一天
所以,
function daysInMonth(y, m)
{
return new Date(y, m + 1, 0).getDate();
}
alert(daysInMonth(2011,1)) // 28
alert(daysInMonth(2012,1)) // 29