[js进阶]时间库moment.js上手

moment.js是广泛使用的时间处理库,是前端开发工程师必须掌握的一个库,官网:http://momentjs.cn/

在看本文之前,建议先熟悉一下js中的Date对象。官方手册:https://www.w3school.com.cn/jsref/jsref_obj_date.asp

1引入moment

(1)安装

npm install moment

(2)引入

import moment from 'moment'

2初始化一个moment对象

更多初始化方法可参考官网。

now = moment()   // 默认获取当前时间的moment对象

moment(String)
moment("1995-12-25")

moment(Object
moment({ hour:15minute:10 })

moment(Number)  // 传入时间戳
moment(1318781876406)

moment(Date)
moment(new Date(2011916))

moment(Number[])
moment([2010114152550125])
......

3获取时间

列举一些获取时间的常用用法

获得当前时间并格式化

这个是开发中最常用的

let now = moment()   // 默认获取当前时间的moment对象
moment().format('MMMM Do YYYY, h:mm:ss a'); // 十二月 8日 2021, 11:39:27 中午
moment().format('dddd');                    // 星期三
moment().format("MMM Do YY");               // 12月 8日 21
moment().format('YYYY [escaped] YYYY');     // 2021 escaped 2021
moment().format()                          // 2021-12-08T11:39:27+08:00
moment().valueOf()                          // 1638944942483

时间/时间戳格式化

moment().format('YYYY年MM月DD日')   //'xxxx年xx月xx日'
moment().format('YYYY-MM-DD HH:mm:ss')   //'xxxx-xx-xx xx:xx:xx'
moment().format('HH时mm分ss秒')   //24小时制 'xx时xx分xx秒'
moment().format('hh:mm:ss a')   // 12小时制'xx:xx:xx am/pm'  

格式化中各个字母的参考,具体详情移步官网。

格式代码 说明 返回值例子
M 数字表示的月份,没有前导零 1到12
MM 数字表示的月份,有前导零 01到12
MMM 三个字母缩写表示的月份 Jan到Dec
MMMM 月份,完整的文本格式 January到December
Q 季度 1到4
D 月份中的第几天,没有前导零 1到31
DD 月份中的第几天,有前导零 01到31
d 星期中的第几天,数字表示 0到6,0表示周日,6表示周六
ddd 三个字母表示星期中的第几天 Sun到Sat
dddd 星期几,完整的星期文本 从Sunday到Saturday
w 年份中的第几周 如42:表示第42周
YYYY 四位数字完整表示的年份 如:2014 或 2000
YY 两位数字表示的年份 如:14 或 98
A 大写的AM PM AM PM
a 小写的am pm am pm
HH 小时,24小时制,有前导零 00到23
H 小时,24小时制,无前导零 0到23
hh 小时,12小时制,有前导零 00到12
h 小时,12小时制,无前导零 0到12
m 没有前导零的分钟数 0到59
mm 有前导零的分钟数 00到59
s 没有前导零的秒数 1到59
ss 有前导零的描述 01到59
X Unix时间戳 1411572969

获取时间戳

当前时间转时间戳

moment().format('X')  // (大写X)以秒为单位,返回值为字符串类型   1638944942 
moment().format('x'// (小写x)以毫秒为单位,返回值为字符串类型  1638944942483
moment().valueOf()   //   以毫秒为单位,返回值为数值型           1638944942483

获取某部分时间

moment().year()   // 2021 
moment().date()   // 8 (日)
moment().day()   // 3 (周三) 
moment().hours()  // 14  (时)
moment().minutes()  //  14 (分)
moment().seconds()  // 0  (秒)

时间转为数组或对象形式

moment().toArray() // [years, months, date, hours, minutes, seconds, milliseconds]
moment().toObject() // {years: xxxx, months: x, date: xx ...}

startOf()endOf()

moment().startOf('day')  //获取今天0时0分0秒
moment().startOf('week')   //获取本周第一天(周日)0时0分0秒
moment().startOf('isoWeek')  //获取本周周一0时0分0秒
moment().startOf('month')  //获取当前月第一天0时0分0秒
 
 
moment().endOf('day')  //获取今天23时59分59秒
moment().endOf('week')  //获取本周最后一天(周六)23时59分59秒
moment().endOf('isoWeek')   //获取本周周日23时59分59秒
moment().endOf('month')  // 获取当前月最后一天23时59分59秒

时间戳转换成时间

moment(时间戳).format("YYYY-MM-DD")   //输出实例 如 2020-10-1
moment(时间戳).format('YYYY年MM月DD日')   //'xxxx年xx月xx日'
moment(时间戳).format('YYYY-MM-DD HH:mm:ss')   //'xxxx-xx-xx xx:xx:xx'
moment(时间戳).format('HH时mm分ss秒')   //24小时制 'xx时xx分xx秒'
moment(时间戳).format('hh:mm:ss a')   // 12小时制'xx:xx:xx am/pm'

日历时间

moment().subtract(10'days').calendar(); // 2021/11/28
moment().subtract(6'days').calendar();  // 上星期四11:54
moment().subtract(3'days').calendar();  // 上星期日11:54
moment().subtract(1'days').calendar();  // 昨天11:54
moment().calendar();                      // 今天11:54
moment().add(1'days').calendar();       // 明天11:54
moment().add(3'days').calendar();       // 下星期六11:54
moment().add(10'days').calendar();      // 2021/12/18

相对时间

moment("20111031""YYYYMMDD").fromNow(); // 10 年前
moment("20120620""YYYYMMDD").fromNow(); // 9 年前
moment().startOf('day').fromNow();        // 12 小时前
moment().endOf('day').fromNow();          // 12 小时内
moment().startOf('hour').fromNow();       // 1 小时前

4设置时间(获取想要的时间)

设置年月日-时分秒

//设置年份为2019
moment().year(2019)  //  Moment<2019-12-08T17:42:53+08:00>
moment().set('year'2019)   //  Moment<2019-12-08T17:42:53+08:00>
moment().set('year'2019).set("month"10).set("date"8)  // Moment<2019-11-08T18:04:46+08:00>
moment().set({'year'2013'month'3})   // 道理同上

设置星期几

moment().day(Number|String);  //day()
moment().weekday(Number)   //weekday()
 
moment().day(-7); // 上个星期日 (0 - 7)
moment().weekday(-7); // 上个星期一
 
moment().day(0); // 这个星期日 (0)
moment().day(7); // 下个星期日 (0 + 7)
moment().day(10); // 下个星期三 (3 + 7)
moment().day(24); // 从现在起第 3 个星期三 (3 + 7 + 7 + 7)

在日期上加或减

// 加七天
moment().add(7'days');

// 制定日期 并加一个月
moment("2018-01-28").add(1'months');

// 链式添加时间
moment().add(7'days').add(1'months');

// 使用对象
moment().add({days:7,months:1}); 

// 减日期时间 操作类似于add()
moment().subtract(NumberString);
moment().subtract(Duration);
moment().subtract(Object);


原文始发于微信公众号(豆子前端):[js进阶]时间库moment.js上手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/56650.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!