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:15, minute:10 })
moment(Number) // 传入时间戳
moment(1318781876406)
moment(Date)
moment(new Date(2011, 9, 16))
moment(Number[])
moment([2010, 1, 14, 15, 25, 50, 125])
......
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(Number, String);
moment().subtract(Duration);
moment().subtract(Object);
原文始发于微信公众号(豆子前端):[js进阶]时间库moment.js上手
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/56650.html