1

I have a javascript function that returns the number of days between two dates, but it seems to return a day less then what mysql dateDiff function would return

 function dateDiffInDays() {
    var date1 = new Date("05/30/2012");
    var date2 = new Date("11/29/2013");
    var diffDays = parseInt((date2 - date1) / (1000 * 60 * 60 * 24)); 

    alert(diffDays );
}

if I use this two dates in the mysql function, i get 548, where as with javascript, I get 547, what does mysql and excel do with their functions thats different with javascript

4

3 回答 3

3

由于我们怀疑时区问题,您可以尝试以下操作:

function dateDiffInDays() {
    var date1 = new Date("05/30/2012");
    var date2 = new Date("11/29/2013");
    var utc1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());
    var utc2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());
    var diffDays = parseInt((utc2 - utc1) / (1000 * 60 * 60 * 24)); 

    alert(diffDays);
}

不过,我不确定。从理论上讲,您的功能也应该有效。

于 2013-09-06T09:10:20.643 回答
0

他们都返回 548 天:

Javascript

var date1 = new Date("05/30/2012"); var date2 = new Date("11/29/2013"); var diffDays = parseInt((date2 - date1) / (1000 * 60 * 60 * 24));

差异天数 548

MySQL

选择日期差异('2013-11-29','2012-05-30');

548

于 2013-09-06T08:39:29.917 回答
0

我从你以前的 javascript 函数中得到 548。但是,如果您的 javascript 和 mysql 之间有 1 个差异,那是因为您的 javascript 计算略有偏差。尝试:

function dateDiffInDays() {
    var date1 = new Date("05/30/2012");
    var date2 = new Date("11/29/2013");

    var date1days = parseInt(date1 / (1000 * 60 * 60 * 24));
    var date2days = parseInt(date2 / (1000 * 60 * 60 * 24));
    var diffDays = date2days - date1days;

    alert(diffDays);
}
于 2013-09-06T08:39:57.347 回答