嗨,我想加上12个月,减去当前的1天 日期。
示例:
valStartDate:2018-01-20
预期日期:2019-01-19
我尝试下面的代码,但出错“ getFullYear()不允许使用的函数”
this.endDate =this.valStartDate.getFullYear()+1+'-'+this.valStartDate.getMonth()+'-'+(this.valStartDate.getDate()-1);
答案 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
转换为Date
:this.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();