Moment.js常用方法使用小结
官方文档:文档 | Moment.js 中文网 (momentjs.cn)
本文所用版本:
moment: "^2.22.1"
一、字符类型时间解析为moment
// 默认字符时间格式解析,语法:moment(String);
moment("2022-10-1 00:00:00"); // 例子
// 带格式的解析,语法:moment(String, formatString)
moment("10-01-2022", "MM-DD-YYYY") // 例子
其中更多方式的格式化解析可参照官方文档。
二、moment类型时间转为字符串时间
// 默认字符格式解析,语法:moment格式时间.format()
moment().format(); // 例子,moment()表示为当前时间
// 带格式的解析,语法:moment格式时间.format("YYYY-MM-DD HH:mm:ss");
moment().format("YYYY-MM-DD HH:mm:ss"); // 例子,moment()表示为当前时间
这里的解析格式同上述字符类型时间解析为moment相同,都是使用了格式化令牌,更多详细内容可查询官方文档。
三、moment类型时间常用操作
3.1 加
// 增加moment时间,其中第一个参数为操作数据,第二个参数为被操作的哪一级时间(官方称为键)
moment().add(1, "days") // 例子,当前时间增加一天
其中键类型如下:
| 键 | 快捷键 |
|---|---|
| years | y |
| quarters | Q |
| months | M |
| weeks | w |
| days | d |
| hours | h |
| minutes | m |
| seconds | s |
这里快捷键是指为了使得操作看起来简短,但是实际建议使用全称这样可读性会高一些。
3.2 减
// moment时间做减法,其中第一个参数为操作数据,第二个参数为被操作的是哪一级时间
moment().subtract(1, "days");
// 使用add也可实现上述相同效果
moment().add(-1, "days");
3.3 设置moment时间为某时间单位的开头startOf()
// 设置为今年一月1日 00:00:00
moment().startOf("year");
// 设置为本月1日 00:00:00
moment().startOf("month");
// 设置为今天 00:00:00
moment().startOf("day")
// ......
3.4 设置moment时间为某时间单位的结尾endOf()
// 设置为今年12月31日 23:59:59
moment().endOf("year");
// ......
// 其他和startOf()相同只是endOf()只是取最后时间
3.5 获取、设置指定时间单位的值
// 获取日期
moment().date();
// 获取小时
moment().hour();
// 获取分钟
moment().minute();
// 获取秒钟
moment().second();
// 设置moment中的日期,接受1-31的数字,超过则冒泡到月份
moment().data(1);
// 设置moment中的小时,接受0-24的数字,超过则冒泡到日期
moment().hour(1);
// 设置moment中的分钟,接受0-59的数字,超过则冒泡到小时
moment().minute(1);
// 设置moment中的秒钟,接受0-59的数字,超过则冒泡到分钟
moment().second(1);
// moment.js还可以链接多个操作进行时间设置
// 注意:如果链接多个操作以构造一个日期,则应从年份、月份、日期等依次开始。 否则,可能会得到意外的结果
moment().year(year).month(month).date(day)
查看官方文档会发现,
moment.js为了方便起见,从 2.0.0 版本开始,单数和复数的方法名称都会存在。推荐使用单数,因为随着版本更新一些复数方法会被舍弃,例如2.16.0 起废弃使用moment().dates()。 改用moment().date()。
除上述时间设置方法外还可以通过set()、get()来设置和获取时间。
// 获取小时
moment().get("hour");
// 获取月 0 至 11
moment().get("month");
// 设置小时
moment().set("hour", 1);
// 设置月 2月
moment().set("month", 1);
// 也可通过对象的时间设置多个时间
moment().set({"hour": 1, "month": 1});
3.6 获取两个时间的差值diff()
// 获取明天和今天相差多少天
let diff = moment().add(1, "day").diff(moment(), "day");
1.支持的度量有 years、months、weeks、days、hours、minutes 和 seconds。 为了便于开发,从 2.0.0 版本开始支持单数形式.
2.其中
moment.js对月份和年份的差异进行一些特殊处理。它做了一些优化,以确保具有相同日期的两个月始终是整数。详情请查看官方文档。
四、小结
这里只是对Moment.js常用方法进行简单总结以便以工作查询,对于更多或更加详细的操作还需查询官方文档。同时查看文档是还需关注目前所用版本信息,因为随着版本的更新一些方法会进行废弃或新增修改。
由于目前
Moment.js已处于停止开发阶段。处理时间时除选用Moment.js外还可选用Day.js。官方通知链接: Moment.js | Docs (momentjs.com),除
Day.js外官方还推荐了其他库。