【JS】moment.js

moment.js (JavaScript 日期处理类库)官网

一、日期格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 七月 7日 2022, 11:27:31 上午
moment().format('dddd');                    // 星期四
moment().format("MMM Do YY");               // 7月 7日 22
moment().format('YYYY [escaped] YYYY');     // 2022 escaped 2022
moment().format();                          // 2022-07-07T11:27:31+08:00

二、相对时间

moment("20111031", "YYYYMMDD").fromNow(); // 11 年前
moment("20120620", "YYYYMMDD").fromNow(); // 10 年前
moment().startOf('day').fromNow();        // 11 小时前
moment().endOf('day').fromNow();          // 13 小时内
moment().startOf('hour').fromNow();       // 28 分钟前

三、日历时间

moment().subtract(10, 'days').calendar(); // 2022/06/27
moment().subtract(6, 'days').calendar();  // 上星期五11:27
moment().subtract(3, 'days').calendar();  // 上星期一11:27
moment().subtract(1, 'days').calendar();  // 昨天11:27
moment().calendar();                      // 今天11:27
moment().add(1, 'days').calendar();       // 明天11:27
moment().add(3, 'days').calendar();       // 下星期日11:27
moment().add(10, 'days').calendar();      // 2022/07/17

四、多语言支持

moment.locale();         // zh-cn
moment().format('LT');   // 11:27
moment().format('LTS');  // 11:27:31
moment().format('L');    // 2022/07/07
moment().format('l');    // 2022/7/7
moment().format('LL');   // 2022年7月7日
moment().format('ll');   // 2022年7月7日
moment().format('LLL');  // 2022年7月7日上午11点27分
moment().format('lll');  // 2022年7月7日 11:27
moment().format('LLLL'); // 2022年7月7日星期四上午11点27分
moment().format('llll'); // 2022年7月7日星期四 11:27

五、获取当前时间

moment().get('year');	// 2022(年)
moment().get('month');  // 6 0 至 11(月份)
moment().get('date');	// 7 (日期)
moment().get('hour');	// 13(小时)
moment().get('minute');	// 14(分钟)
moment().get('second');	// 15(秒)
moment().get('millisecond'); // 222 毫秒

六、查询

6.1 isBefore()

检查一个 moment 是否在另一个 moment 之前。

第一个参数会被解析为 moment (如果尚未解析)。

moment('2010-10-20').isBefore('2010-10-21'); // true

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精确度,且不仅仅是要检查单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true

moment#isAftermoment#isSame 一样,moment#startOf 支持的任何时间单位也适用于 moment#isBefore

year month week isoWeek day hour minute second

6.2 isSame()

检查一个 moment 是否与另一个 moment 相同。

第一个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isSame('2010-10-20'); // true

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

moment('2010-10-20').isSame('2009-12-31', 'year');  // false
moment('2010-10-20').isSame('2010-01-01', 'year');  // true
moment('2010-10-20').isSame('2010-12-31', 'year');  // true
moment('2010-10-20').isSame('2011-01-01', 'year');  // false

当包含第二个参数时,则它将会匹配所有等于或更大的单位。 传入 month 将会检查 monthyear。 传入 day 将会检查 daymonthyear

moment('2010-01-01').isSame('2011-01-01', 'month'); // false, 不同的年份
moment('2010-01-01').isSame('2010-02-01', 'day');   // false, 不同的月份

6.3 isAfter()

检查一个 moment 是否在另一个 moment 之后。

第一个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isAfter('2010-10-19'); // true

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

moment#isSamemoment#isBefore 一样,moment#startOf 支持的任何时间单位也适用于 moment#isAfter

year month week isoWeek day hour minute second

如果未将任何内容传给 moment#isAfter,则它将会默认为当前时间。

moment().isAfter(); // false

6.4 isSameOrBefore()

检查一个 moment 是否在另一个 moment 之前或与之相同。

第一个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isSameOrBefore('2010-10-21');  // true
moment('2010-10-20').isSameOrBefore('2010-10-20');  // true
moment('2010-10-20').isSameOrBefore('2010-10-19');  // false

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isSameOrBefore('2009-12-31', 'year'); // false
moment('2010-10-20').isSameOrBefore('2010-12-31', 'year'); // true
moment('2010-10-20').isSameOrBefore('2011-01-01', 'year'); // true

6.5 isSameOrAfter()

检查一个 moment 是否在另一个 moment 之后或与之相同。 第一个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isSameOrAfter('2010-10-19'); // true
moment('2010-10-20').isSameOrAfter('2010-10-20'); // true
moment('2010-10-20').isSameOrAfter('2010-10-21'); // false

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isSameOrAfter('2011-12-31', 'year'); // false
moment('2010-10-20').isSameOrAfter('2010-01-01', 'year'); // true
moment('2010-10-20').isSameOrAfter('2009-12-31', 'year'); // true

6.5 isBetween()

检查一个 moment 是否在其他两个 moment 之间,可选地检查指定的单位刻度(分钟,小时,日期等)。 这个匹配是排他的。 前两个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
moment('2010-10-20').isBetween('2010-10-19', undefined); // true, 因为 moment(undefined) 等效于 moment()

如果要将粒度限制为毫秒以外的单位,则将单位作为第三个参数传入。

moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true

moment#isSamemoment#isBeforemoment#isAfter 一样,moment#startOf 支持的任何时间单位也适用于 moment#isBetween。 年份、月份、星期、ISO星期、日期、小时、分钟、秒钟。

2.13.0 版本引入了包容性。 [ 表示包含。 ( 表示排除。 如果使用包容性参数,则必须传入两个指示符。

moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true

注意,如果 fromto 参数相同,但包容性参数不同,则将会返回 false。

moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '(]'); //false

如果未指定包容性参数,则 Moment 将会默认为 ()

6.6 isDST()

moment().isDST();

moment#isDST 检查当前时刻是否为夏令时(daylight saving time)。

moment([2011, 2, 12]).isDST(); // false, 2011年3月12日不是 DST。
moment([2011, 2, 14]).isDST(); // true, 2011年3月14日是 DST。
// 此示例适用于 "en" 语言环境:https://www.timeanddate.com/time/dst/2011.html

6.7 isLeapYear()

moment().isLeapYear();

如果该年是闰年,则 moment#isLeapYear 返回 true,否则返回 false

moment([2000]).isLeapYear() // true
moment([2001]).isLeapYear() // false
moment([2100]).isLeapYear() // false

6.8 isMoment()

moment.isMoment(obj);

要检查变量是否为 moment 对象,则使用 moment.isMoment()

moment.isMoment() // false
moment.isMoment(new Date()) // false
moment.isMoment(moment()) // true

2.11.0 版本开始,还可以通过 instanceof 运算符检测 moment 对象:

moment() instanceof moment // true

6.9 isDate()

moment.isDate(obj);

要检查变量是否为原生 js Date 对象,则使用 moment.isDate()

moment.isDate(); // false
moment.isDate(new Date()); // true
moment.isDate(moment()); // false

猜你喜欢

转载自blog.csdn.net/qq_53931766/article/details/125660234