2016-08-02 72 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