moment.js处理日期偏移的几个方法示例:获取前n天/周/月/年

2023-08-25 13:36:45 浏览数 (2)

moment.js 是一个用于解析、校验、操作、显示日期和时间的 JavaScript 工具库,它提供了丰富而简洁的 API,让我们可以轻松地处理各种日期和时间相关的任务。

在本文中,我将分享几个 moment.js 的扩展应用方法,希望能够给你带来一些启发和帮助。

有时候我们需要获取某个日期之前或之后的某个时间点,比如获取昨天、上周、上个月或者去年的日期。这种情况下,我们可以使用 moment.js 的 subtract 和 add 方法来实现。

subtract 方法可以接受两个参数:第一个参数是一个数字,表示要减去多少单位;第二个参数是一个字符串,表示要减去的单位。例如:

代码语言:javascript复制
// 获取昨天
moment().subtract(1, 'days').format('YYYY-MM-DD');
// 获取上周
moment().subtract(1, 'weeks').format('YYYY-MM-DD');
// 获取上个月
moment().subtract(1, 'months').format('YYYY-MM-DD');
// 获取去年
moment().subtract(1, 'years').format('YYYY-MM-DD');

add 方法与 subtract 方法类似,只不过是增加而不是减少。例如:

代码语言:javascript复制
// 获取明天
moment().add(1, 'days').format('YYYY-MM-DD');
// 获取下周
moment().add(1, 'weeks').format('YYYY-MM-DD');
// 获取下个月
moment().add(1, 'months').format('YYYY-MM-DD');
// 获取明年
moment().add(1, 'years').format('YYYY-MM-DD');

方便起见,我封装了几个方法,用来获取第前 n 天/周/月/年:

代码语言:javascript复制
/**
 * @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);
};

还写了一个获取两个间隔日期之间的所有日期:

代码语言:javascript复制
/**
 * @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;
};

本文介绍了 moment.js 这个非常优秀的 JavaScript 工具库,它可以帮助我们轻松地处理日期和时间相关的任务。分享了几个 moment.js 的扩展应用方法,包括如何获取第前 n 天/周/月/年、如何进行日期范围查询和格式化等。

还展示了如何使用自己编写的方法来实现这些功能,并且提供了相应的代码和示例。希望这篇文章能够对你有所帮助,让你能够更好地利用 moment.js 来提升你的 JavaScript 日期处理能力。

未经允许不得转载:w3h5-Web前端开发资源网 » moment.js处理日期偏移的几个方法示例:获取前n天/周/月/年

0 人点赞