如何在 Javascript 中进行日期舍入?

How to do date rounding in Javascript?

我有一组日期,我想将它们四舍五入到不同的频率 - 周、月、季度和年。相当于四舍五入的数字,但用于日期。

这是一个示例数组:

const dates = [
  "1/4/2020",
  "2/5/2021",
  "8/15/2021",
];

按月四舍五入将得出:

[
  "1/31/2020",
  "2/28/2021",
  "8/31/2021",
];

最近的年份:

[
  "12/31/2020",
  "12/31/2021",
  "12/31/2021",
];

等等。是否有允许这种舍入的 Javascript 库?如果没有,是否有一个简单的函数可以涵盖上述频率?我可以为每个用例编写一个自定义函数,但这可能效率不高。

假设您的第一个日期数组中存在拼写错误,并且“2/5/2020”应该是“2/5/2021”(这可以解释您想要的结果),此代码应该有效:

function roundMonth(dateString) {
  var date = new Date(Date.parse(dateString));
  var year = date.getFullYear();
  var month = date.getMonth();
  var date = new Date(year, month + 1, 0); 
    // day 0 yields the last day of the previous month, 
    // so we add 1 to the month value
  var year = date.getFullYear();
  var month = date.getMonth();
  var day = date.getDate();
  var date = [month + 1,day,year].join("/");
    // for string output we add 1 to month since Jan is month 0
  return date;
}

function roundYear(dateString) {
  var date = new Date(Date.parse(dateString));
  var year = date.getFullYear();
  var date = [12,31,year].join("/");
  return date;
}