moment.js 是一个用于解析、校验、操作、显示日期和时间的 JavaScript 工具库,它提供了丰富而简洁的 API,让我们可以轻松地处理各种日期和时间相关的任务。
在本文中,我将分享几个 moment.js 的扩展应用方法,希望能够给你带来一些启发和帮助。
有时候我们需要获取某个日期之前或之后的某个时间点,比如获取昨天、上周、上个月或者去年的日期。这种情况下,我们可以使用 moment.js 的 subtract 和 add 方法来实现。
subtract 方法可以接受两个参数:第一个参数是一个数字,表示要减去多少单位;第二个参数是一个字符串,表示要减去的单位。例如:
// 获取昨天 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 方法类似,只不过是增加而不是减少。例如:
// 获取明天 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 天/周/月/年:
/** * @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; };
本文介绍了 moment.js 这个非常优秀的 JavaScript 工具库,它可以帮助我们轻松地处理日期和时间相关的任务。分享了几个 moment.js 的扩展应用方法,包括如何获取第前 n 天/周/月/年、如何进行日期范围查询和格式化等。
还展示了如何使用自己编写的方法来实现这些功能,并且提供了相应的代码和示例。希望这篇文章能够对你有所帮助,让你能够更好地利用 moment.js 来提升你的 JavaScript 日期处理能力。
未经允许不得转载:前端资源网 - w3h5 » moment.js处理日期偏移的几个方法示例:获取前n天/周/月/年