Moment.js

Moment.js 是一个轻量级的 JavaScript 时间库。

文档:http://momentjs.cn/docs/#/use-it/

安装引入:

node.js 方式:
  1. 安装:npm install moment或者yarn add moment
  2. 引入: 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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平