介绍:
moment.js是一个专门用来处理时间的函数库,可以在浏览器和node.js环境中使用。
安装:npm i moment --save
使用:
import moment from 'moment'
const moment = require('moment')
这里引入的moment其实就是一个函数,会根据传入的参数返回一个moment实例
moment实例实际上就对Date对象的一层包装
moment实例有大量的方法可以使用,足以满足日常业务需求。
一.创建moment实例
1 根据当前日期创建实例:moment();
2 根据date对象创建实例:moment(new Date());
3 根据字符串创建实例:moment('2018--10--10' ,'YYYY--MM--DD');第一参数为时间字符串,第二参数为该时间的格式
如果一个字符串是符合ISO 8601 标准的时间字符串,则不需要传入第二个参数,如:moment('2018-10-10')
时间的格式参考官网http://momentjs.cn/docs/#/parsing/
第二个参数也可以是时间格式的数组,用于处理格式可能存在多样的情况
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM", "DD-MM-YYYY"]); // uses the last format
moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"]); // uses the first format
4 根据毫秒数创建实例:moment(Number)
5 根据时间戳创建实例 : moment(Number)
6 复制一个moment : moment (Moment)或者 var a= moment(); var b= a.clone()
二.根据moment实例获取我们想要的格式数据
var mom= moment();
1 获得格式化字符串 mom.format("YYYY-MM-DD HH:mm:ss") (此处重点,注意分和秒的大小写)细节参考http://momentjs.cn/docs/#/displaying/
2 获得和设置毫秒,秒,日(月),日(周),周,月,年参考文档
3 最大(小)日期
moment.max(Moment[,Moment...]);
moment.min(Moment[,Moment...]);
三 操作moment
moment对象是mutable的对象,每次操作都会返回一个新的moment
1 加法:
moment().add(7, 'days');
2 剪法:
moment().subtract(1,'days')
3 链式调用:moment().add(1,'d').subtract(1,M)
4 设置年月日时分秒:
moment().year(2018).month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0);
四 比较
moment的时间十分语义化
1.是否之前
moment().isBefore(Moment|String|Number|Date|Array);
moment().isBefore(Moment|String|Number|Date|Array, String);
第一参数是时间,可以是moment实例也是可以是其他,第二参数是是比较的精度(如果是year则只比较年,如果是day则会比较年月日)
moment('2010-10-20').isBefore('2010-10-21'); // true
2. 是否之后
moment().isAfter(Moment|String|Number|Date|Array);
moment().isAfter(Moment|String|Number|Date|Array, String);
3. 是否相同
moment().isSame(Moment|String|Number|Date|Array);
moment().isSame(Moment|String|Number|Date|Array, String);
4. 是否之间
moment().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
// where moment-like is Moment|String|Number|Date|Array
第三个参数也是精度
5. 是否是闰年
moment().isLeapYear();
6. 是否是moment对象
moment.isMoment(obj);
7 相同或之前,相同或之后
moment().isSameOrBefore(Moment|String|Number|Date|Array);
moment().isSameOrBefore(Moment|String|Number|Date|Array, String);
moment().isSameOrAfter(Moment|String|Number|Date|Array);
moment().isSameOrAfter(Moment|String|Number|Date|Array, String);