javascript - 如何使用 moment.js 获取给定范围内每个月的特殊日期列表

标签 javascript date momentjs

假设开始日期是 2019-01-10 。我们必须提前 15 个月检查。 所以结束日期是2020-04-10

我想获取上面列表中每个月的每10天的列表。

如下:

['2019-01-10' , '2019-02-10' , '2019-03-10' , '2019-04-10' , ...... , '2020-04-10' ]

我怎样才能在 moment,js 中做到这一点? 如果这在 moment.js 中不可能实现,那么我们可以通过哪些方法在 JavaScript 中做到这一点?

最佳答案

在普通 JavaScript 中只需使用 Date.setMonth 。对于 29、30 和 31 等开始日期,结果日期将延续到下个月,因此您必须处理这种情况。

function buildDates(startDate, months) {
  return Array.from({
    length: months
  }, function(_, i) {
    var date = new Date(startDate.getTime());
    var mnth = date.getMonth();
    date.setMonth(mnth + i);
    if (date.getMonth() !== (mnth + i) % 12) {
      date.setDate(0);
    }
    return date;
  });
}

console.log(buildDates(new Date(2019, 0, 10), 15));
console.log(buildDates(new Date(2019, 0, 31), 15));

关于javascript - 如何使用 moment.js 获取给定范围内每个月的特殊日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073422/

相关文章:

python - 生成一个范围内日期的正态分布

javascript - 使用 moment.js 将 date() 设置为用户时区的午夜

javascript - 在 javascript(typescript) 中格式化数字

javascript - 如何禁用 MobileSafari 自动选择?

java - 如何正确检查2个Calendar对象表示的日期(年月日)是否相同?

javascript - mongoDB ISO日期到字符串与moment.js时区转换

javascript - 使用 moment 将当前时间转换为毫秒

php - 为什么当我单击调用此函数的链接时没有任何反应?

javascript - 未捕获的类型错误 : undefined is not a function

java - 使用 Joda 了解时间何时超过某个点