moment.js 笔记

获取第前 n 天/周/月/年:

/**
 * @description 获取第前 {n} 天
 * @param introTime 传入的时间 默认为当前时间
 * @param num 偏移值
 * @returns Format 格式
 */
export const getBeforeDay = (
  introTime: string | Moment = moment(new Date()),
  num: number = 24, // 默认值 24
  format: string = 'YYYYMMDD', // 默认日期格式 20230320
) => {
  return moment(introTime).subtract(num, 'days').format(format);
};

/**
 * @description 获取第前 {n} 个周
 * @param introTime 传入的时间 默认为当前时间
 * @param num 偏移值
 * @returns Format 格式
 */
export const getBeforeWeek = (
  introTime: string | Moment = moment(new Date()),
  num: number = 24,
  format: string = 'YYYYww',
) => {
  return moment(introTime).subtract(num, 'weeks').format(format);
};

/**
 * @description 获取第前 {n} 个月
 * @param introTime 传入的时间 默认为当前时间
 * @param num 偏移值
 * @returns Format 格式
 */
export const getBeforeMonth = (
  introTime: string | Moment = moment(new Date()),
  num: number = 24,
  format: string = 'YYYYMM',
) => {
  return moment(introTime).subtract(num, 'months').format(format);
};

/**
 * @description 获取第前 {n} 年
 * @param introTime 传入的时间 默认为当前时间
 * @param num 偏移值
 * @returns Format 格式
 */
export const getBeforeYear = (
  introTime: string | Moment = moment(new Date()),
  num: number = 10,
  format: string = 'YYYY',
) => {
  return moment(introTime).subtract(num, 'years').format(format);
};

获取两个间隔日期之间的所有日期:

/**
 * @description 获取两个日期之间的所有日期
 * @param startDate 传入的时间:开始日期
 * @param endDate 传入的时间:结束日期
 * @param unit 单位:默认是天
 * @param format 日期格式:默认为 YYYYMMDD
 * @returns 日期列表/数组
 */
export const getDaysBetweenDates = function (startDate: Moment, endDate: Moment, unit: 'days' | 'weeks' | 'months' | 'years' = 'days', format: string = 'YYYYMMDD',) {
  const now = startDate.clone(), dates = [];
  while (now.isSameOrBefore(endDate)) {
    dates.push(now.format(format));
    now.add(1, unit);
  }
  return dates;
};