将一天添加到Javascript日期+唯一格式?

时间:2011-06-21 14:38:33

标签: javascript jquery date

我为一家我正在为之工作的公司继承了一个项目。他们的日期以下列格式记录:

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日”。

任何人都可以帮助我吗?

3 个答案:

答案 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();

http://jsfiddle.net/jGwYY/259/

演示

答案 1 :(得分:1)

您可能希望将日期字符串转换为Date对象,向对象添加一天,然后转换回来。请查看Date的API文档作为起点。

答案 2 :(得分:0)

大多数(所有?)浏览器都可以使用简单的

解析该日期字符串
var parsedDate = new Date(dateString);

获得Date对象后,您可以使用underscore.date之类的内容添加一天并输出格式化的日期字符串。

如果您发现某些浏览器无法解析该日期格式,那么您可以编写一个非常简单的正则表达式,将日期字符串拆分为其组成部分,然后手动构建Date实例。

此外,我强烈建议在单独的函数中进行解析,并尝试尽可能多地在Date表示中保留日期。尽快将字符串解析为日期,并尽可能晚地将其格式化为字符串。