获取两个日期之间的所有月份或日期

41 阅读1分钟
/**
 * 获取两个日期之间的所有月份或日期
 * @param {Object} options
 * @param {String} options.startDate 开始日期
 * @param {String} options.endDate 结束日期
 * @param {String} options.format 格式化字符串
 * @param {String} options.type 时间类型 可选值:month, day
 * @returns {Array} 月份列表
 */
tool.getDatesBetween = ({
  startDate,
  endDate,
  format = "YYYY-MM",
  type = "month",
}) => {
  startDate = dayjs(startDate);
  endDate = dayjs(endDate);
  let months = [];
  let current = startDate.clone(); // 使用 clone 以避免修改原始日期对象

  // 循环遍历日期,直到达到结束日期
  while (current.isBefore(endDate, type)) {
    months.push(current.format(format)); // 格式化为 '年-月' 形式并添加到数组中
    current = current.add(1, type); // 将当前日期增加一个月
  }
  // 最后一个月份丢失
  months.push(endDate.format(format));
  return months;
};