javascript - 如何使用 MM-DD 映射获取 1 年后的日期

javascript - how to get the date after 1 year with MM-DD mapping

我正在创建一个函数来获取日期。

我想得到的最终日期是1年后的日期。

格式为 YYYY-MM-DD,如 2022-03-31

YYYY 必须是 1 年后。(如果今天是 2021,YYYY = 2022)

MM-DD 必须匹配:

03-31
06-30
09-30
12-31

生成日期必须至少晚于

1 年

比如今天是2021-08-04,函数应该return2022-09-30.

我试图研究 moment.js,但它并没有告诉我如何去做,因为它用于格式化。

我相信你正在寻找加 1 年,搬到下一个季度末。

给定变量 someDate 中的任何日期:

function endOfQuarterNextYear(someDate) {
  // Create a copy since date will get changed
  var d = new Date(someDate);
  
  // Set the date out by 15 months
  // (1 year plus 1 quarter)
  d.setMonth(d.getMonth() + 15);

  // Move back to start of quarter
  // % 3 means remainder after divide by 3, (and
  // note please that month numbers are 0-based in JS)
  // in month 9  (Oct) you will get month 9 (Oct)
  // in month 10 (Nov) you will get month 9 (Oct)
  // in month 11 (Dec) you will get month 9 (Oct)
  d.setMonth(d.getMonth() - (d.getMonth() % 3));

  // Move back to last day of prior month, which is
  // also last day in prior quarter
  // (and which is day '0' in current month)
  d.setDate(0);

  return d;
}

// To format the date, just take any date object
// and call:
someDate.toISOString().slice(0, 10);
// Gives 2021-09-30 type format

// So:
const someDate = new Date();
const nextYearQtr = endOfQuarterNextYear(someDate);
console.log(nextYearQtr.toISOString().slice(0,10));
// 2022-09-30 as of current date