立即添加12个月

时间:2019-04-26 10:35:19

标签: javascript typescript

  

嗨,我想加上12个月,减去当前的1天   日期。

示例:

  1. valStartDate:2018-01-20

  2. 预期日期:2019-01-19

我尝试下面的代码,但出错“ getFullYear()不允许使用的函数”

this.endDate =this.valStartDate.getFullYear()+1+'-'+this.valStartDate.getMonth()+'-'+(this.valStartDate.getDate()-1);

4 个答案:

答案 0 :(得分:2)

确保给定的开始日期是日期,而不是字符串。

var startDate = new Date(2018, 0, 20);
var startDatePlus12Months = new Date(startDate.setMonth(startDate.getMonth() + 12));
var expectedDate = new Date(startDatePlus12Months.getFullYear(), startDatePlus12Months.getMonth(), startDatePlus12Months.getDate() - 1);

答案 1 :(得分:1)

这是一种抽象所需日期的方法,将其应用于该变量,您应该会很好。

var date = new Date(); // now 
var newDate = new Date(date.getFullYear() + 1, date.getMonth(), date.getDate() - 1);

console.log(newDate.toLocaleDateString());

this.valStartDate.getFullYear()为了使此功能有效,this.valStartDate必须是有效的JavaScript日期,并且看起来与new Date();会给您的格式相同。

Fri Apr 26 2019 11:52:15 GMT+0100 (British Summer Time)

答案 2 :(得分:0)

this.endDate = new Date(this.endDate); // <= maybe you get a string date...
this.endDate.setMonth(this.endDate.getMonth() + 12);
this.endDate.setDate(this.endDate.getDate() - 1);

如果要从服务器或以前的Json格式获取日期,则可能需要首先将其从string转换为Datethis.endDate = new Date(this.endDate);。看来这是你的情况。

答案 3 :(得分:0)

借助Moment.js,这很容易:

const startDate = moment('2018-01-20');
const endDate = startDate.add(12, 'months').subtract(1, 'days').toDate();