1

2 つの日付の間の日数を返す JavaScript 関数がありますが、mysql の dateDiff 関数が返すよりも 1 日少ない日を返すようです。

 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 );
}

この 2 つの日付を mysql 関数で使用すると、548 が得られます。JavaScript と同様に、547 が得られます。mysql と Excel は、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));

diffDays 548

MySQL

select datediff('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 に答える