javascript:如何将日期字符串(YYYY-MM-DD)增加1天

我知道如何在php中使用date()和mktime()函数,但不知道如何在javascript中完成同样的事情…

function incr_date(date_str){ //...magic here return next_date_str; } var date_str = '2011-02-28'; console.log( incr_date(date_str) ); //want to output "2011-03-01" 

这对js来说甚至可能吗?

首先解析它,然后使用dt.setDate(dt.getDate() + 1) 。 但是,你必须手动解析它,或使用DateJS或类似的东西; 所有主流浏览器尚不支持该格式( new Date(date_str) 无法跨浏览器可靠地运行;请参阅下面的注释)。 然后将其转换回您的格式。

这些方面的东西:

 function incr_date(date_str){ var parts = date_str.split("-"); var dt = new Date( parseInt(parts[0], 10), // year parseInt(parts[1], 10) - 1, // month (starts with 0) parseInt(parts[2], 10) // date ); dt.setDate(dt.getDate() + 1); parts[0] = "" + dt.getFullYear(); parts[1] = "" + (dt.getMonth() + 1); if (parts[1].length < 2) { parts[1] = "0" + parts[1]; } parts[2] = "" + dt.getDate(); if (parts[2].length < 2) { parts[2] = "0" + parts[2]; } return parts.join("-"); } 

实例

请注意, setDate将正确处理滚动到下个月(如果需要,还可以使用年份)。

实例

以上测试适用于IE6,IE7,IE8; Linux上的Chrome,Opera和Firefox; Windows上的Chrome,Opera,Firefox和Safari。

关于在JavaScript中支持这种格式的说明:JavaScript中的new Date(string)构造函数最近才具有可接受标准化的格式,从2009年12月发布的ECMAScript第5版开始 。当浏览器支持格式时,将支持您的格式,但在撰写本文时,没有发布的IE版本(甚至IE8)都不支持它。 其他最近的浏览器大多数。

如果您使用的是jQuery和jQuery UI,请使用以下命令:

 var dt = $.datepicker.parseDate('yy-mm-dd', '2011-02-25'); dt.setDate(dt.getDate() + 1) var dtNew = $.datepicker.formatDate('yy-mm-dd', dt); 

您可以任何方式解析格式化 ,最重要的是,您不需要在JS库中使用新函数。

首先,您需要将日期字符串转换为Date对象。

 var date = new Date('2011-02-28'); 

然后你需要在日期的一天添加一个。

 date.setDate(d.getDate() + 1); 

虽然这看起来可能会在2月29日结束,但它不会也会给你3月1日。

我会从这里使用date.js – http://www.datejs.com/

有很多function来处理这种事情。

我修改了这个优秀的答案https://stackoverflow.com/a/5116693/4021614来处理任何数量的递增和递减(使用此方法https://stackoverflow.com/a/25114400/4021614 )。

 function incrementDate(date_str, incrementor) { var parts = date_str.split("-"); var dt = new Date( parseInt(parts[0], 10), // year parseInt(parts[1], 10) - 1, // month (starts with 0) parseInt(parts[2], 10) // date ); dt.setTime(dt.getTime() + incrementor * 86400000); parts[0] = "" + dt.getFullYear(); parts[1] = "" + (dt.getMonth() + 1); if (parts[1].length < 2) { parts[1] = "0" + parts[1]; } parts[2] = "" + dt.getDate(); if (parts[2].length < 2) { parts[2] = "0" + parts[2]; } return parts.join("-"); }; 

例:

 //increment by 7 days incrementDate('2015-01-01', 7); //returns '2015-01-08' //decrement by 1 day incrementDate('2015-01-01', -1); //returns '2014-12-31' 

是。 首先,您阅读日期并转换为日期对象,然后添加1天并返回结果

 function incrementDate(date_str) { var date = new Date(date_str); date.setDate(date.getDate() + 1); return date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate(); } 

Date对象是javascript中的原生对象 ,它可以解决因闰年等问题而产生的所有问题。

我希望这个能帮上忙

 function incr_date(date_str,no_of_days_to_add){ var futureDate=new Date(date_str); futureDate.setDate(new Date().getDate()+no_of_days_to_add); var next_date_str= futureDate; return next_date_str; }