1

提供された日付から現在の日付までの日数を計算したい。次のJavaScriptを使用していますが、間違った結果が得られます。

function getcabin(saildates) {
    var d = new Date();

    var month = d.getMonth()+1;
    var day = d.getDate();

    var output = d.getFullYear() + '-' + month + '-' + day;
    alert(daydiff(parseDate(output), parseDate(saildates)));
}
function parseDate(str) {
    var mdy = str.split('-')
    return new Date(mdy[2], mdy[0]-1, mdy[1]);
}

function daydiff(first, second) {
    return (second-first)/(1000*60*60*24)
}

誰かが間違いやそれを行う方法を指摘できますか?

4

4 に答える 4

0

新しい日付の構文は次のとおりです。

新しい日付(年、月、日[、時、分、秒、ミリ秒])

それとは別に、getcabinでは月に1を追加しますが、parseDateでは年に-1を追加します。

于 2012-10-06T08:52:58.213 に答える
0

コードで、新しいDate関数にパラメーターを渡す際に誤りがあります。

構文は次のとおりです。

    new Date(year,month,day[,hour,minute,second,millisecond]);

変更されたコード:

function getcabin(saildates)
{
    var d = new Date();
    var month = d.getMonth()+1;
    var day = d.getDate();

    var output = d.getFullYear() + '-' + month + '-' + day;
    alert(daydiff(parseDate(output), parseDate(saildates)));
}
function parseDate(str)
{
    var mdy = str.split('-')
    return new Date(mdy[0], mdy[1]-1, mdy[2]);
}

function daydiff(first, second) {
    return (second-first)/(1000*60*60*24)
}
getcabin("2012-10-8")
​

これにより、正しい日の値が通知されます。

于 2012-10-06T09:01:22.923 に答える
0

ここでは、次の形式を使用していますyyyy-mm-dd

var output = d.getFullYear() + '-' + month + '-' + day;

ここでは、次のように解析していますmm-dd-yyyy

return new Date(mdy[2], mdy[0]-1, mdy[1]);

パーサーに合うように日付をフォーマットするには:

var output = month + '-' + day + '-' d.getFullYear();

次のように解析したい場合yyyy-mm-dd

return new Date(mdy[0], mdy[1]-1, mdy[2]);
于 2012-10-06T09:04:16.763 に答える
0

この機能を試すことができます

function getDayDiff(date) {
     return parseInt(((new Date()) - date)/(1000*60*60*24))
} 

したがって、年の最初の日との日差を見つけようとすると

getDayDiff(new Date(2012,0,1))

結果は279日数で取得します

于 2012-10-06T09:50:28.077 に答える