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
我正在创建一个函数来获取日期。
我想得到的最终日期是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