在Date上添加日期时的奇怪行为

Tot*_*ndo 4 javascript date

我想在约会上添加一些日子,但实际上我得到了一个奇怪的结果......

我今天测试当天(28/02/2019),尝试添加400天,我在2096年...我认为tere是一个问题

看看我的功能:

const user = { LastReport: new Date(), Validite: "413" }

var temp = new Date(user.LastReport)
console.log("Current : " + temp);
user.DateValide = temp.setDate(temp.getDate() + user.Validite);
console.log("Day to add : " + user.Validite)
console.log("Result : " + new Date(user.DateValide))
Run Code Online (Sandbox Code Playgroud)

和我的结果:

在此输入图像描述

有什么我做错了吗?

Ful*_*Guy 5

temp.getDate() + user.Validite被连接起来作为字符串,从而增加了天28413,而不是441.

使用parseInt()将它们转换为数字或你可以像算术运算符前缀他们+.

const user = { LastReport: new Date(), Validite: "413" }

var temp = new Date(user.LastReport)
console.log("Current : " + temp);
//user.DateValide = temp.setDate(parseInt(temp.getDate()) + parseInt(user.Validite));
user.DateValide = temp.setDate(+temp.getDate() + +user.Validite);
console.log("Day to add : " + user.Validite)
console.log("Result : " + new Date(user.DateValide))
Run Code Online (Sandbox Code Playgroud)