2016-08-02 78 views
2

我有這個非常簡單的代碼,它的工作原理,但有時其他時候它給出完整的錯誤日期:添加天在javascript日期/打字稿給出完全錯誤的日期

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

下面是輸出的一個例子:

作品!

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好吧,我複製並粘貼了其中一個問題的答案。但仍然得到一個方法,其工作時間爲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