MomentJS - 日期查询
现代日期/时间:使用 Moment.js 查询日期
Section titled “现代日期/时间:使用 Moment.js 查询日期”Moment.js 提供了几种实用的方法来比较日期和检查它们的属性,简化了常见的逻辑检查,例如日期是否在某个范围内或是否是闰年。
与往常一样,考虑到 Moment.js 的维护状态,建议在新项目中使用 Day.js 或 date-fns 等替代库,它们也提供类似的查询功能。
日期比较方法
Section titled “日期比较方法”这些方法允许您比较一个 moment 对象相对于另一个:
| 方法 | 描述与语法 |
|---|---|
| 是否在…之前 | 检查一个 moment 对象是否在另一个 moment 对象之前。moment().isBefore(Moment|String|Number|Date|Array);moment().isBefore(Moment|String|..., String); // 可选:指定单位粒度(例如,'year' 年,'month' 月,'day' 天)moment('2023-10-26').isBefore('2023-11-01'); // truemoment('2023-10-26').isBefore('2023-10-26', 'day'); // false(同一天) |
| 是否与…相同 | 检查一个 moment 对象是否与另一个 moment 对象相同。moment().isSame(Moment|String|Number|Date|Array);moment().isSame(Moment|String|..., String); // 可选:指定单位粒度moment('2023-10-26').isSame('2023-10-26'); // truemoment('2023-10-26T12:00').isSame('2023-10-26T13:00', 'day'); // true(同一天)moment('2023-10-26T12:00').isSame('2023-10-26T13:00', 'hour'); // false(不同的小时) |
| 是否在…之后 | 检查一个 moment 对象是否在另一个 moment 对象之后。moment().isAfter(Moment|String|Number|Date|Array);moment().isAfter(Moment|String|..., String); // 可选:指定单位粒度moment('2023-11-01').isAfter('2023-10-26'); // true |
| 是否与…相同或在…之前 | 检查一个 moment 对象是否与另一个 moment 对象相同或在之前。moment().isSameOrBefore(Moment|String|Number|Date|Array);moment().isSameOrBefore(Moment|String|..., String); // 可选:指定单位粒度moment('2023-10-26').isSameOrBefore('2023-10-26'); // truemoment('2023-10-25').isSameOrBefore('2023-10-26', 'day'); // true |
| 是否与…相同或在…之后 | 检查一个 moment 对象是否与另一个 moment 对象相同或在之后。moment().isSameOrAfter(Moment|String|Number|Date|Array);moment().isSameOrAfter(Moment|String|..., String); // 可选:指定单位粒度moment('2023-10-26').isSameOrAfter('2023-10-26'); // truemoment('2023-10-27').isSameOrAfter('2023-10-26', 'day'); // true |
| 是否在…之间 | 检查一个 moment 对象是否在另外两个 moment 对象之间。moment().isBetween(momentLikeStart, momentLikeEnd);moment().isBetween(start, end, String); // 可选:指定单位粒度moment().isBetween(start, end, String, String); // 可选:包容性 '()', '[)', '(]', '[]'moment('2023-10-26').isBetween('2023-10-01', '2023-10-31'); // truemoment('2023-10-31').isBetween('2023-10-01', '2023-10-31', null, '[]'); // true(包含边界)moment('2023-10-31').isBetween('2023-10-01', '2023-10-31', null, '()'); // false(不包含边界) |
日期属性查询
Section titled “日期属性查询”这些方法检查 moment 对象或变量的特定特性:
| 方法 | 描述与语法 |
|---|---|
| 是否为夏令时 | 检查当前 moment 对象是否处于夏令时。moment().isDST();注意:行为取决于底层 JavaScript 环境确定夏令时的能力。 |
| 是否为闰年 | 检查 moment 对象所在的年份是否为闰年。moment('2024-01-01').isLeapYear(); // truemoment('2023-01-01').isLeapYear(); // false |
| 是否为 Moment 对象 | 检查一个变量是否为 Moment.js 对象。moment.isMoment(obj);moment.isMoment(moment()); // truemoment.isMoment(new Date()); // false |
| 是否为原生 Date 对象 | 检查一个变量是否为原生 JavaScript Date 对象。moment.isDate(obj);moment.isDate(new Date()); // truemoment.isDate(moment()); // false |
示例:检查事件资格
Section titled “示例:检查事件资格”const eventStart = moment('2024-03-15');const eventEnd = moment('2024-03-20');const userSignupDate = moment('2024-03-18');const today = moment();
if (userSignupDate.isBetween(eventStart, eventEnd, 'day', '[]')) { console.log('用户在事件期间报名。');} else { console.log('用户未在事件期间报名。');}
if (today.isAfter(eventEnd)) { console.log('事件已结束。');}
if (moment('2024-02-29').isValid() && moment('2024-01-01').isLeapYear()) { console.log('2024 是闰年,2月29日是有效日期。');}这些查询方法是应用程序中处理日期相关逻辑的基本构建块。
更多细节请查阅文档:https://momentjs.com/docs/#/query/