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

标签 javascript jquery

我知道如何在 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("-");
}

Live example

请注意,setDate 将正确处理滚动到下个月(必要时还包括下一年)的问题。

Live example

以上内容已经过测试,适用于 IE6、IE7、IE8; Linux 上的 Chrome、Opera 和 Firefox; Windows 上的 Chrome、Opera、Firefox 和 Safari。

关于在 JavaScript 中支持这种格式的注释:JavaScript 中的 new Date(string) 构造函数直到最近才有了它可以接受的标准化格式,截至 ECMAScript 5th edition。于 2009 年 12 月发布。当浏览器支持时,您的格式将被支持,但在撰写本文时,没有已发布的 IE 版本(甚至 IE8)不支持它。其他最近的浏览器大多这样做。

关于javascript:如何将日期字符串 (YYYY-MM-DD) 增加 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116657/

相关文章:

javascript - 传单获取编号

javascript - (JavaScript 和 HTML)单击时更改按钮的不透明度

javascript - 为什么 Jquery 不起作用,而 js 却起作用?

jquery - 可扩展列表,在突出显示时跳转一个像素

iFrame/Javascript 鼠标加速中的 Javascript iPhone 滚动效果

javascript - 是否有一个库允许我在页面底部加载 jQuery 但仍然用 $(function() {}) 填充我的 html

javascript - 导出为 SVG 时在 amcharts.com 图表标题中为工件下划线

javascript - Facebook Connect - 单点登录导致无限循环 :(

javascript - 帮助自动调整背景图像的大小

jquery - jquery-ui.css googleapis 与 localhost 的奇怪行为