两个日期之间的差异

时间:2012-08-22 19:35:42

标签: javascript date

我必须简单地计算两个日期之间的差异,并将其显示为整数,但如果两个日期之间存在大量日期(超过26个),并且如果有日期,则下面的代码会出错在两个日期之间的一个月的第31个。

无法找到我的代码有什么问题......?

'ires_sakuma_datums''ires_beigu_datums'的值由jquery日历选择器设置,并以例如以下格式显示:分别为25-08-201217-09-2012,结果应显示为内容'dienu_skaits'

示例'ires_sakuma_datums'设置为28-08-2012'ires_beigu_datums'设置为29-09-2012,结果为31.041666666666668,但我希望结果为{{1} }}

32

1 个答案:

答案 0 :(得分:0)

问题是要传递给Date的月份是0,所以你必须从月份中减去1。 http://jsfiddle.net/qB9V3/5/因此,您在28-08-201229-09-2012之间的比较实际上是在区分28-09-201229-10-2012

所以你的代码需要改为

    var arr1 = x.split('-');
    var arr2 = y.split('-');
    var dt1 = new Date();
    dt1.setFullYear(arr1[2], parseInt(arr1[1],10) -1, arr1[0]);
    var dt2 = new Date();
    dt2.setFullYear(arr2[2], parseInt(arr2[1],10) - 1, arr2[0]);

请注意,如果您的日期跨越夏令时更改,则介于两者之间的天数将不均匀,因此您需要对结果进行舍入

document.getElementById('dienu_skaits').value = Math.round( 
    (dt2 - dt1) / (60 * 60 * 24 * 1000) 
);