2016-08-02 13 views
2

を与える:ここではジャバスクリプト/ typescriptですで日付に日数を追加すると、私はこの非常に単純なコードを持っており、それは時々動作しますが、他の時間、それは完全に間違った日付を与える完全に間違った日付に

addDays(date: Date, days: number): Date { 
    console.log('adding ' + days + ' days'); 
    console.log(date); 
    date.setDate(date.getDate() + days); 
    console.log(date); 
    return date; 
    } 

は出力の例です。 :

Works!

adding 7 days 
error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 
error-chart.component.ts:120 Tue Aug 09 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 

停止作業:

adding 14 days 
error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 
error-chart.component.ts:120 Thu Mar 02 2017 00:00:00 GMT+0100 (Vest-Europa (normaltid)) 

は何とか今2年

adding 14 days 
error-chart.component.ts:118 Thu Jul 07 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 
error-chart.component.ts:120 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 

4年間をジャンプ!

adding 14 days 
error-chart.component.ts:118 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 
error-chart.component.ts:120 Thu Apr 14 2022 00:00:00 GMT+0200 (Vest-Europa (sommertid)) 
+0

JS日付質問の莫大な量があります。彼らの誰もこれに答えていないと確信していますか? – evolutionxbox

+0

@evolutionxboxまあ、これらの質問の1つから答えをコピーして貼り付けました。しかし、まだ時間の10%で動作するメソッドを取得します。 – ganjan

答えて

2

タイプに問題があります。 daysが14の場合、8月16日に正しく出力されます。ただし、daysが「14」の場合は、3月2日になります。

ソリューション:

addDays(date: Date, days: number): Date { 
    console.log('adding ' + days + ' days'); 
    console.log(date); 
    date.setDate(date.getDate() + parseInt(days)); 
    console.log(date); 
    return date; 
    } 
+0

Typescriptは 'days'についてこのエラーを返します: '' number '型の引数は' string '型のパラメータに代入できません。 – Francesco