moment.js的简单应用

前言

最近做的前端项目遇到了处理日期时间的问题,要对数据库中的时间进行处理,由于原生的日期格式处理起来很繁琐,所以选用momentjs来对日期进行一些常规的处理

跟原生js为了完成一个简单的日期时间显示效果而要写一大堆处理函数相比,momentjs算是极其轻量级的操作时间的工具库,支持字符串、Date、时间戳以及数组等格式,它使得操作时间变得非常简单

使用心得

momentjs支持多个环境,可以在浏览器中引入momentjs文件即可

<script src="https://cdn.bootcss.com/moment.js/2.9.0/moment.js"></script>

也可以脱离浏览器的环境在nodejs中使用,但需要安装moment模块

npm install moment

然后加载模块即可

var moment = require('moment')

实例

创建

获得当前时间

moment() // 当前时间

相当于moment(new Date()) 此处会返回一个moment封装的日期对象

image

初始化一个指定的时间

moment('2018-01-21') // 2018-01-21 
moment(Date.now() - 24 * 60 * 60 * 1000) // 昨天
moment(new Date(2018, 01, 22)) // 2018-01-22
moment({year:2015,month:10,day:26,hour:22}) // 传入一个具有日期字段的对象

格式化

moment().format('YYYY年MM月DD日 HH:mm:ss') // 2018年01月22日 18:01:41
moment().format('YYYY-MM-DD HH:mm:ss') // 2018-01-22 18:02:35
moment().format('YYYY/MM/DD HH:mm:ss') // 2018/01/22 18:03:29
moment().format('hh:m:ss') // 06:2:32
moment().format('YYYY') // "2018"
moment().format('d') // 今天是星期几
moment().format('X') // 转换当前时间的Unix时间戳

转换为Date对象

moment().toDate() // Mon Jan 22 2018 18:11:55 GMT+0800 (中国标准时间)
moment('2018-01-20').toDate() // Tue Jan 20 2015 00:00:00 GMT+0800 (中国标准时间)
moment('2018-01-22 10:20:15').toDate() // Mon Jan 22 2018 10:20:15 GMT+0800 (中国标准时间)
moment(1448896064621).toDate() //毫秒转日期

获取/设置时间信息

moment().second() // 秒
moment().second(Number) // 设置 秒 0 到 59

类似还可以设置分获得分设置小时获得小时

moment().date() // 日
moment().day() // 星期几
moment().dayOfYear() // 一年里的第几天
moment().week() // 一年里的第几周
moment().month() // 月-1
moment().quarter() // 一年里的第几个季度
moment().year() // 年
moment().daysInMonth() // 当前月有多少天

操作

moment('20160901', 'YYYYMMDD').fromNow() // 1 years ago

时间加减

moment().add(7, 'days') // 当前时间加上7天 第2个参数还可以是 'months', 'years' 等
moment().add(7, 'd') // 与上面一行代码的运行结果一样
moment().subtract(1, 'months') // 当前的月份减去1个月

moment().startOf('week') // 本周第一天
moment().startOf('hour') // 等效于moment().minutes(0).seconds(0).milliseconds(0)

开始结束时间

moment().endOf('year') // 将时间设置为今年的最后时刻
moment().startOf('month') // 将时间设置为这个月的开始
moment().endOf('week') // 将时间设置为本周的最后时刻

比较传入日期的最大值最小值

a = moment().add(7, 'days')
b = moment().subtract(1, 'days')
moment.max(a, b)
moment.min(a, b)

时间差(默认返回相差的毫秒数)

a = moment().add(7, 'days')
b = moment().subtract(1, 'days')
a.diff(b) // 86400000
a.diff(b, 'days') // 1 返回相差的天数

查询

早于

moment('2018-01-22').isBefore('2018-01-21') // true
moment('2018-01-22').isBefore('2018-02-23', 'year') // false
moment('2018-01-22').isBefore('2019-01-01', 'year') // true

是否相等

moment('2018-01-22').isSame('2018-01-22') // true
moment('2018-01-22').isSame('2017-12-31', 'year') // false
moment('2018-01-22').isSame('2018-01-01', 'year') // true

晚于

moment('2018-01-22').isAfter('2010-10-21') // true
moment('2018-01-22').isAfter('2018-01-01', 'year') // false
moment('2018-01-22').isAfter('2017-12-31', 'year') // true

是否在时间范围内

moment('2018-01-22').isBetween('2018-01-01', '2018-10-25') // true
moment('2018-01-22').isBetween('2017-01-01', '2018-01-28', 'year') // false
moment('2018-01-22').isBetween('2017-12-31', '2019-01-01', 'year') // true

moment().isLeapYear() // 是否是闰年

官网地址