如何在javascript中将字符串转换为日期并向该日期添加一年

如何在javascript中将字符串转换为日期并向该日期添加一年,javascript,date,Javascript,Date,我有这个字符串2017年6月29日我想把它转换成JavaScript日期并加上一年,结果应该是2018年6月28日怎么做。我试过这个 var MyDate = new Date('29/06/2017'); 输出是无效的日期对象如何转换它并添加一年。您可以尝试切换日期和年份 var date = new Date('29/06/2017'.split('/').reverse().join('/')); var plusOneYear = date.setFullYear(date.getFu

我有这个字符串
2017年6月29日
我想把它转换成JavaScript日期并加上一年,结果应该是
2018年6月28日
怎么做。我试过这个

var MyDate = new Date('29/06/2017');

输出是无效的日期对象如何转换它并添加一年。

您可以尝试切换日期和年份

var date = new Date('29/06/2017'.split('/').reverse().join('/'));
var plusOneYear = date.setFullYear(date.getFullYear()+1);
console.log(date); // output: Fri Jun 29 2018 00:00:00
console.log(new Date(plusOneYear)); // output: Fri Jun 29 2018 00:00:00
console.log(date.toLocaleDateString()) // output: 6/29/2018
console.log(date.getDate() + '/' + (date.getMonth+1) + '/' + date.getFullYear()); // output: 29/6/2018
另一种方法是

var date = '29/06/2017'.split('/'); // will become [day][month][year]
var newDate = date[2] + '/' + date[1] + '/' + date[0]; // join in format you would prefer
var plusOneYear = newDate.setFullYear(newDate.getFullYear()+1);
console.log(new Date(plusOneYear));
console.log(newDate.toLocaleDateString()) // output: 6/29/2018
编辑过的

试试这个

var MyDate = new Date('29/06/2017'.split('/').reverse().join('/')); 
new Date(MyDate.setYear(MyDate.getFullYear() + 1));

与其他用户不同,我想让您了解处理此问题的另一种方法

Moment.js

var myDate = moment("29/06/2017", "MM/DD/YYYY");

目的是什么?

该库在Javascript开发人员中非常流行,因为它易于实现,并允许您通过提供的内置功能更轻松地操作日期

另外,使用此库可以解决的另一个有趣问题是国际化。

国际化和日期

您可能知道,每种语言都有自己的处理和书写日期的方法。 (翻译月份、不同显示等)

js提供了一整套功能,让您可以通过预先翻译的单词和语法轻松处理这些问题

如何使用矩.js解决您的问题

var myDate = moment("29/06/2017", "MM/DD/YYYY");
此外,您可以检查您的日期是否有效

myDate.isValid();
在这里,您可以使用以下方法简单地添加一年:

myDate.add(1, 'y'); // Which stands for add a year

这是一个两个问题。解析部分的答案是。一旦你有了一个日期,添加一年是很简单的,但是你需要考虑将一年添加到2月29日,这将返回到3月1日(因为下一年不会有2月29日)

//用于DD/MM/YYYY的简单解析器
函数parseDMY(s){
var b=s.split(/\D/);
返回新日期(b[2],b[1]-1,b[0]);
}
//简单格式化程序:日期至年月日
函数格式my(d){
return('0'+d.getDate()).slice(-2)+'/'+
('0'+(d.getMonth()+1)).slice(-2)+'/'+
d、 getFullYear();
}
//将年份添加到日期
功能添加年份(d){
var date=d.getDate();
d、 setFullYear(d.getFullYear()+1);
//测试2月29日是否过渡到3月1日
如果(日期!=d.getDate()){
d、 setDate(d.getDate()-1);
}
返回d;
}
//测试(最低限度)
['29/02/2016','29/6/2017'].forEach(职能部门){
var日期=已解析日期;
年份(日期);
console.log(formattmy(date));

});感谢您的工作,但我如何才能在该日期前添加一年,并再次将其格式化为此格式2018年6月28日请不要使用内置解析器解析字符串。另外,OP希望在前一天。您是否在2016年2月29日尝试过此功能?您是否考虑过在闰年2月29日运行此功能的特殊情况?谢谢您的帮助,但现在是2018年6月29日星期五00:00:00 GMT+0530(印度标准时间)吗?我需要29/06/2018@bharathRaj您可以使用矩.js格式化字符串。就像路易斯在回答中提到的那样。