在两个日期之间找出天数差异的问题

时间:2010-06-09 21:21:40

标签: javascript actionscript-3

我一直在使用一个整洁的小程序,我发现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

3 个答案:

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

无法确定。我猜是在舍入/截断错误。