我一直在使用一个整洁的小程序,我发现here来计算AS3中两个日期之间的天数差异。我得到了一些奇怪的结果,我想知道你们中间是否有任何一个跨区域的超级领主能够发光?
为什么2010年的第一季度有一天会缩短,而在所有其他情况下,例程表现正常?
非常感谢能够提供帮助的任何人!
function countDays( startDate:Date, endDate:Date ):int
{
var oneDay:int = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var diffDays:int = Math.abs((startDate.getTime() - endDate.getTime())/(oneDay));
return diffDays;
}
countDays( new Date( 2010, 00, 01 ), new Date( 2011, 00, 01 ) );
// returns 365, which is correct
countDays( new Date( 2010, 00, 01 ), new Date( 2010, 03, 01 ) );
// returns 89, which is 1 day short
countDays( new Date( 2010, 03, 01 ), new Date( 2010, 06, 01 ) );
// returns 91, which is correct
countDays( new Date( 2010, 06, 01 ), new Date( 2010, 09, 01 ) );
// returns 92, which is correct
countDays( new Date( 2010, 09, 01 ), new Date( 2011, 00, 01 ) );
// returns 92, which is correct
答案 0 :(得分:4)
夏令时,也许?你在第一季度失去了一个小时,所以你的函数必须截断int而不是舍入。
答案 1 :(得分:4)
下面应该有效:
function countDays( startDate:Date, endDate:Date ):int
{
var oneDay:int = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var diffDays:int = Math.round(Math.abs((startDate.getTime() - endDate.getTime())/(oneDay)));
return diffDays;
}
答案 2 :(得分:1)
无法确定。我猜是在舍入/截断错误。