我为一家我正在为之工作的公司继承了一个项目。他们的日期以下列格式记录:
2011年3月18日将被列为“2011年3月18日”。
2010年4月31日将被列为“2010年4月31日”。
我如何使用Javascript将一天添加到以上述方式格式化的日期,然后将其重新转换回相同的格式?
我想创建一个功能,为“2011年3月18日”增加一天,并返回“2011年3月19日”。或者在“2011年6月30日”增加1天并返回“2011年7月1日”。
任何人都可以帮助我吗?
答案 0 :(得分:22)
首先,没有4月31日;)
对于实际问题,日期对象在作为参数传递时可以理解当前格式。
var dateString = '30 Apr 2010'; // date string
var actualDate = new Date(dateString); // convert to actual date
var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1); // create new increased date
// now extract the bits we want to crete the text version of the new date..
var newDateString = ('0'+newDate.getDate()).substr(-2) + ' ' + newDate.toDateString().substr(4,3) + ' ' + newDate.getFullYear();
alert(newDateString);
演示http://jsfiddle.net/gaby/jGwYY/1/
使用(支持的更好)slice
代替substr
// now extract the bits we want to crete the text version of the new date..
var newDateString = ('0'+newDate.getDate()).slice(-2) + ' ' + newDate.toDateString().slice(4,7) + ' ' + newDate.getFullYear();
演示
答案 1 :(得分:1)
您可能希望将日期字符串转换为Date对象,向对象添加一天,然后转换回来。请查看Date的API文档作为起点。
答案 2 :(得分:0)
大多数(所有?)浏览器都可以使用简单的
解析该日期字符串var parsedDate = new Date(dateString);
获得Date对象后,您可以使用underscore.date之类的内容添加一天并输出格式化的日期字符串。
如果您发现某些浏览器无法解析该日期格式,那么您可以编写一个非常简单的正则表达式,将日期字符串拆分为其组成部分,然后手动构建Date实例。
此外,我强烈建议在单独的函数中进行解析,并尝试尽可能多地在Date表示中保留日期。尽快将字符串解析为日期,并尽可能晚地将其格式化为字符串。