Javascript递增并递减YYYY-MM-DD 1天

时间:2017-03-31 04:33:58

标签: javascript date

我从另一个堆栈问题中得到了这个

incr_date(date_str){
    let parts = date_str.split("-");
    let 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("-");
}

它有效但是如何将此函数转换为递减日期而不是递增?

我在反应原生组件上执行此操作,因此我不想导入任何javascript库,如moment.js

2 个答案:

答案 0 :(得分:0)

function dateAdd(dte){
var date = new Date(dte);
date.setDate(date.getDate() + 1);
console.log("add one day= "+date)
}
function datesub(dte){
var date = new Date(dte);
date.setDate(date.getDate() - 1);
console.log("minus one day = "+ date)
}
dateAdd("01-01-2017")
datesub("01-01-2017")

答案 1 :(得分:0)

我将字符串转换为Javascript可理解的格式,增加一天并将其转换回用户可理解的格式。我正在使用标志(布尔值)来确定天气以增加日期,反之亦然。

var convertDate = function(dt, flag) {
  var dateArr = dt.split('-');
  var tempDate = new Date();
  var mm = dateArr[1] - 1; //Javascript considers 0 as Jan
  tempDate.setFullYear(dateArr[0]);
  tempDate.setMonth(mm);
  tempDate.setDate(dateArr[2]);
  if (flag) {
    tempDate.setDate(tempDate.getDate(dateArr[2]) + 1);//Add's one day
  } else {
    tempDate.setDate(tempDate.getDate(dateArr[2]) - 1);//Sub's one day
  } 
  var userFriendlyMonth = (Number(tempDate.getMonth()) + 1); //user considers 1 as Jan
  return tempDate.getFullYear() + '-' + userFriendlyMonth + '-' + tempDate.getDate();
}
document.getElementById("increment").innerHTML = convertDate('2018-11-30', true);
document.getElementById("decrement").innerHTML = convertDate('2018-11-30', false);
<div>Increment: <span id="increment"></span></div>
<div>Decrement: <span id="decrement"></span></div>