插件 | moment.js的实用操作

1,830 阅读4分钟

这是我参与更文挑战的第6天,活动详情查看 更文挑战

moment.js是一个非常实用的日期工具类,可以获取或者格式化日期等,为了不要每次都去官网查询,所以对一些经常使用的用法进行一个整理记录。

时间获取

获取当前的时间

 //获取当前时间 (年月日时分秒)
moment().format('YYYY-MM-DD HH:mm:ss') 

//获取当前时间戳
moment().valueOf()

//获取近一个月时间,如(2021-06-09~2021-07-09)
moment(new Date()).subtract(1,'months').format('YYYY-MM-DD')+'~'+moment().format('YYYY-MM-DD')

//只获取年,如2021年
moment().year();

//只获取月,如6月(此处月份从0开始,当前月要+1)
moment().month()+1;

//只获取日,如13号
moment().date();

//本月第一天
moment().startOf('month').format('YYYY-MM-DD');

//本年第一天
moment().startOf('year').format('YYYY-MM-DD');

//本年最后一天
moment().endOf('year')

获取【之前】的时间


//获取去年的今天
moment().subtract(1, 'year').format('YYYY-MM-DD');

//获取上个月的今天
moment().subtract(1, 'months').format('YYYY-MM-DD');

//获取上周五(可以简单理解为上周倒数第几天,上周倒数第三天就是上周五了,和当天日期无关)
moment().weekday(-3).format('YYYY-MM-DD');

//获取5天前的日期
moment().subtract(5, 'days').format('YYYY-MM-DD');


//获取前一(年月日时分秒),负数就是往前的时候,正数就是往后的时间
moment().add(-1,'year').format('YYYY-MM-DD HH:mm:ss') //前一【年】
moment().add(-1,'month').format('YYYY-MM-DD HH:mm:ss') //前一【月】
moment().add(-1,'week').format('YYYY-MM-DD HH:mm:ss') //前一【周】
moment().add(-1,'days').format('YYYY-MM-DD HH:mm:ss') //前一【天】
moment().add(-1,'hour').format('YYYY-MM-DD HH:mm:ss') //前一【小时】
moment().add(-1,'minute').format('YYYY-MM-DD HH:mm:ss') //前一【分钟】
moment().add(-1,'second').format('YYYY-MM-DD HH:mm:ss') //前一【秒】

获取【之后】的日期

//获取指定日期当月的最后一天
moment("2021-01-01").endOf('month').format("YYYY-MM-DD") //结果2021-01-31
//获取本周五
moment().weekday(5).format('YYYY-MM-DD');

//本月最后一天
moment().endOf('year').format('YYYY-MM-DD');

//本年最后一天
moment().endOf('month').format('YYYY-MM-DD');

时间格式化

格式化当前时间为时间戳

//格式化时间戳(以秒为单位)
moment().format('X')

//格式化时间戳(以毫秒为单位)
moment().format('x') === moment().valueOf();

时间戳格式化

moment(1623496322380).format('YYYY-MM-DD HH:mm:ss');

【中国标准时间】互转

let time = new Date();//Sat Jun 13 2021 14:29:52 GMT+0800 (中国标准时间)

//转为时间格式
let time2 = moment(time).format("YYYY-MM-DD HH:mm:ss") //2021-06-12 14:29:52

//转回中国标准时间
new Date(2021-06-12 14:29:52);

//转为时间戳
let time3 = moment(time).valueOf()//毫秒

//转为时间戳,并且指定时分秒
let time4 = moment(time).hours(23).minutes(59).seconds(59).valueOf()

UTC格式化

moment().utc().format("YYYY-MM-DD HH:mm:ss")

时间比较

是否之前

moment('2020-10-20').isBefore('2021-10-21'); // true
moment('2020-10-20').isBefore('2020-12-31', 'year'); // false
moment('2020-10-20').isBefore('2021-01-01', 'year'); // true

是否相同(判断年月日)

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

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

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

是否之后

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

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

是否之间

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true

时间计算

计算两个时间的差值diff

moment(endTime).diff(moment(startTime), 'years')

moment(endTime).diff(moment(startTime), 'months')

// 开始时间和结束时间的时间差,以“天”为单位;endTime和startTime都是毫秒数
moment(endTime).diff(moment(startTime), 'days') 

moment(endTime).diff(moment(startTime),'minutes' )

moment(endTime).diff(moment(startTime), 'seconds')


小可爱看完就点个赞再走吧!🤞🤞🤞