parseInt舍入一个月的天数

时间:2012-01-05 10:52:59

标签: javascript date rounding parseint

以这种方式计算的月数:

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()是否可以?

3 个答案:

答案 0 :(得分:2)

您可以使用parseFloatMath.round 如果您需要下一个整数,可以使用Math.ceil

答案 1 :(得分:1)

你测试了多远?对我来说似乎不是100%安全。

看看这个方法:http://snippets.dzone.com/posts/show/2099

我是如何回过头来做的,效果非常好:)。

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