-2

私はこのコードを持っています

function myFunction(){
    alert( new Date(getAllTime(2012,12,24)).toString());
}
function getAllTime(y,m,d){
    return getDaysMilisec(getDaysFromYear(y))+getDaysMilisec(getDaysFromMonth(m,y))+getDaysMilisec(d);
}
function getDaysMilisec(d){
    return d*24*60*60*1000;
}
function getDaysFromYear(y){
    return (bisect(y) ? 366 : 365);
}
function bisect(y){ 
    if( (y%4==0 && y%100!=0) || (y%400==0)) return true;
    return false;
}
function getDaysFromMonth(m,y){ 
    if(m==2 && bisect(y)) return 28; 
    if(m==2 && !bisect(y))return 27; 
    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) return 31; 
    return 30;
}

myFunction()の出力

1971年2月26日金曜日02:00:00GMT+ 0200(GTB標準時)?

なぜ2012年12月24日ではないのですか?

4

2 に答える 2

1

Date.prototype.toStringメソッドは正確にその形式を返します。JSは期待どおりに動作しています。日付を目的の形式で返したい場合は、次のようにします。

var someDate = newDate();
console.log(d.getDate() + '.' + (d.getMonth()+1) + '.' + d.getFullYear());

JavaScriptのDateオブジェクトは、最初は少し混乱します(まあ、それは常にある程度IMOを混乱させるでしょう)。しかし、MDNは多くのことを非常に迅速に解決できます

于 2012-10-22T19:25:38.297 に答える
0

1970 年 1 月 1 日から X ミリ秒後の日付new Date(X).toString()が返されます。

他の関数は、実際の日付を考慮しないため、誤った値を返します (たとえばgetDaysFromYear(y)、1 年の日数のみで、1971 年からの年数とは関係ありません)。

于 2012-10-22T19:29:18.567 に答える