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天/周/月/年