moment.js 时间类库常用用法

0x00 介绍

Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。

0x01 格式化

1
2
3
4
5
const moment = require("moment");
// 格式化当前日期
const now = moment();
const normalFmt = now.format("YYYY-MM-DD HH:mm:ss");
console.log("标准格式:" + normalFmt);

0x02 解析时间字符串

1
2
3
4
5
6
7
8
9
const moment = require("moment")
const now = moment('2022-05-22')
const nowByFmt = moment('2022年5月22日','YYYY年M月DD日')
const nowByTime = moment(now.valueOf())
console.log(`
日期格式 ${now.format('YYYY-MM-DD HH:mm:ss')}
带有解析字符串 ${nowByFmt.format('YYYY-MM-DD HH:mm:ss')}
毫秒时间戳 ${nowByTime.format('YYYY-MM-DD HH:mm:ss')}
`)

0x03 获取时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const moment = require("moment")
// 使用函数对象,在使用startOf,endOf函数会导致时间移动
const now = () => moment('2022-05-22')
console.log(`
获取今天开始时间 ${now().startOf('D').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取今天结束时间 ${now().endOf('D').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本周第一天(周日)开始时间 ${now().startOf('week').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本周第一天(周一)开始时间 ${now().startOf('isoWeek').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月第一天时间 ${now().startOf("M").format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月最后一天时间 ${now().endOf("M").format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月天数 ${now().format('YYYY-MM')} => ${now().daysInMonth()}
获取今天周几(周日为第一天)${now().day()} ${now().weekday()}
获取今天周几(周一为第一天)${now().isoWeekday()}
获取秒时间戳 ${now().format('X')} ${now().unix()}
获取毫秒时间戳 ${now().format('x')} ${now().valueOf()}
`)

0x04 时间计算

1
2
3
4
5
6
7
8
9
10
11
12
13
const moment = require("moment");
const now = () => moment("2022-05-22")
const start = () => moment("2022-05-22")
const end = () => moment("2022-06-22")
console.log(`
当前 ${now().format('YYYY-MM-DD HH:mm:ss')}
加1天 ${now().add(1,'d').format('YYYY-MM-DD HH:mm:ss')}
加1个月 ${now().add(1,'M').format('YYYY-MM-DD HH:mm:ss')}
减1天 ${now().subtract(1,'d').format('YYYY-MM-DD HH:mm:ss')}
减1个月 ${now().subtract(1,'M').format('YYYY-MM-DD HH:mm:ss')}
计算相差几天 ${end().diff(start(),'d')}
计算相差几分钟数 ${end().diff(start(),'m')}
`)