Moment.js 是一个轻量级的 JavaScript 时间库。
文档:http://momentjs.cn/docs/#/use-it/
安装引入:
node.js 方式:
- 安装:
npm install moment
或者yarn add moment
; - 引入: import 方式
import moment form 'moment'
或者 require 方式var moment = require('moment')
。
浏览器方式:
<script src="moment.js"></script>
解析:
调用 moment() 获取到的是 Moment 对象。
moment():
要获取当前的日期和时间,只需调用不带参数的 moment() 即可。
var now = moment();// 也返回当前的日期和事件
moment(undefined);
moment([]);
moment({});
moment(String):
当调用带字符串参数的 moment(String) ,会检查字符串是否是合法格式,获取到的是 Moment 对象。
moment('2021-03-23')
浏览器对于解析字符串的支持是不一致的。 因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的格式在其他浏览器中可能无效。
moment(Number):
以通过传入一个整数值来创建 moment,该整数值表示自 Unix 纪元(1970 年 1 月 1 日 12AM UTC)以来的毫秒数。
var day = moment(1318781876406)
若要从 Unix 时间戳(自 Unix 纪元以来的秒数)创建 moment,则使用 moment.unix(Number)。
var day = moment.unix(1318781876)
monent(Object):
可以通过指定对象中的某些单位来创建 moment。省略年月日,默认获取的是当前的年月日;省略时分秒,默认获取的是0.
moment({unit: value, ...})
oment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123})
moment({ years:'2010', months:'3', date:'5', hours:'15', minutes:'10', seconds:'3', milliseconds:'123'})
moment(Array):
可以使用数值数组(映射传给 new Date() 的参数)来创建 moment。
moment([2010, 1, 14, 15, 25, 50, 125])
moment(Date):
可以使用预先存在的原生 Javascript Date 对象来创建 Moment。
var day = new Date(2011, 9, 16)
var dayWrapper = moment(day)
可以转化为 JS 原生的 Date 对象:
moment().toDate() new Date(moment())
moment(Moment):
所有的 moment 都是可变的。 如果想要克隆 moment,则可以隐式或显式地操作。
var a = moment([2012])
var b = moment(a)
a.year(2000)
b.year() // 2012
也可以调用 moment#clone 克隆 moment。
var a = moment([2012]) var b = a.clone() a.year(2000) b.year() // 2012
取值、赋值:
Moment.js 使用重载的 getter 和 setter 方法。不带参数调用这些方法会作为 getter,返回值为数字;而带参数调用则会作为 setter,返回值为 Moment 对象。
year():
获取或设置年份。接受 -270,000 至 270,000 之间的数字。
moment().year()
moment().year(Number)
quarter():
获取或设置季度(1 到 4)。
moment().quarter()
moment().quarter(Number)
month():
获取或设置月份。接受 0 到 11 之间的数字。 如果超出范围,则它将会冒泡到年份。
moment().month()
moment().month(Number|String)
date():
获取或设置月份的日期。接受 1 到 31 之间的数字。 如果超出范围,则它将会冒泡达到月份。
moment().date()
moment().date(Number)
day():
获取或设置星期几。其中星期日为 0、星期六为 6。如果超出范围,则它将会冒泡到其他星期。
moment().day()
moment().day(Number|String)
hour():
获取或设置小时。接受 0 到 23 之间的数字。 如果超出范围,则它将会冒泡到日期。
moment().hour()
moment().hour(Number)
second():
获取或设置秒钟。接受 0 到 59 之间的数字。 如果超出范围,则它将会冒泡到分钟。
moment().second()
moment().second(Number)
millisecond():
获取或设置毫秒。接受 0 到 999 之间的数字。 如果超出范围,则它将会冒泡到秒钟。
moment().millisecond();
moment().millisecond(Number)
get():
字符串 getter。
moment().get('year')
moment().get('month') // 0 至 11
moment().get('date')
moment().get('hour')
moment().get('minute')
moment().get('second')
moment().get('millisecond')
set():
通用 setter。
moment().set('year', 2013)
moment().set('month', 3) // 四月
moment().set('date', 1)
moment().set('hour', 13)
moment().set('minute', 20)
moment().set('second', 30)
moment().set('millisecond', 123)moment().set({'year': 2013, 'month': 3})
max():
返回给定的 moment 实例的最大值。如果其中一个参数是无效的 moment ,则结果为无效的 moment。
moment.max(Moment[,Moment...])
moment.max(Moment[])
const a = moment('2021-03-12')
const b = moment('2021-02-12')
console.log(moment.max(a,b)) //a
min():
返回给定的 moment 实例的最小值。如果其中一个参数是无效的 moment ,则结果为无效的 moment。
moment.min(Moment[,Moment...])
moment.min(Moment[])
操作:
Moment 对象可以进行链式操作。
moment().add(7, 'days').subtract(1, 'months').year(2009).hours(0).minutes(0).seconds(0)
moment 是可变的。调用任何一种操作方法都会改变原始的 moment。如果要创建副本并对其进行操作,则应在操作 moment 之前对其进行克隆。
add():
增加时间。
moment().add(Number, String)
moment().add(Object)
moment().add(7, 'days')
moment().add({days:7,months:1})
subtract():
减去时间。
moment().subtract(Number, String);
moment().subtract(Object);
startOf():
获取开始时间。
moment().startOf(String)
moment().startOf('month') //获取当前月第一天0时0分0秒
console.log(moment().startOf('date')) // 获取今天0时0分0秒
moment().startOf('week') // 获取本周第一天,即周日0时0分0秒
moment().startOf('isoWeek') //获取本周周一0时0分0秒
endOf():
获取结束时间。
moment().endOf(String)
格式化时间:
format():
格式化为指定的格式。
moment().format();
moment().format(String);
moment().format()
moment().format('YYYY-MM-DD')
valueOf():
格式化为以毫秒为单位的时间戳。
moment().valueOf() // 返回值为数值型
unix():
格式化为以秒为单位的时间戳。
moment().unix()
比较时间:
diff():
获取两个日期之间的时间差。
end_date.diff(start_date) // 返回毫秒数
end_date.diff(start_date, 'months') // 返回月数
end_date.diff(start_date, 'weeks') // 返回星期数
end_date.diff(start_date, 'days') // 返回天数
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000