前端杂谈 · Web

JavaScript 时间操作类库:Moment.js

•̀.̫•́✧ · 2月27日 · 2020年 · 本文1966字 · 阅读5分钟3,161

Moment.js 是一个很棒的 JavaScript 库,可帮助您在浏览器和 Node.js 中管理日期。

本文旨在解释该库的基础知识和最常用的用法。

安装

您可以使用脚本标签直接从 unpkg.com 将其包含在页面中:

<script src="https://unpkg.com/moment" />

或使用 npm:

npm install moment

如果使用 npm 安装,则需要导入软件包(使用 ES Modules):

import moment from 'moment'

或要求使用(CommonJS):

const moment = require('moment')

获取当前日期和时间

const date = moment()

解析日期

可以通过传递日期的字符串来初始化 Moment 对象:

const date = moment(string)

它接受任何字符串,按照 (顺序) 解析:

ISO 8601 肯定是最方便的。这是格式参考:

ISO 8601 肯定是最方便的。这是格式参考:

格式含义例子
YYYY4 位数字年份2018
YY2 位数字年份18
M2 位数字月份号,省略前导 07
MM2 位数字月号07
MMM3 个字母的月份名称7 月
MMMM全月名称七月
dddd全天名称周日
gggg4 位数字,星期2018
gg两位数字星期18
w一年中的周没有前导零18
ww一年中以零开头的一周18
e星期几,从 0 开始4
D2 位天数,省略前导 09
DD2 位数字的天数09
Do天序号9 号
T指示时间部分的开始
HH2 位数小时 (24 小时制),从 0 到 2322
H2 位数小时 (24 小时制),从 0 到 23,前导 022
kk2 位数小时 (24 小时制) 从 1 到 2423
k2 位数小时 (24 小时制) 从 1 到 24,不加 023
a/Aampmpm
hh2 位数小时 (12 小时制)11
mm2 位数字分钟22
ss2 位数秒40
s2 位秒,不带前导零40
S1 位数毫秒1
SS2 位毫秒12
SSS3 位数毫秒123
Z时区+02:00
xUNIX 时间戳 (以毫秒为单位)1410432140575

设定日期

格式化日期

当您要输出纯 JavaScript Date 对象的内容时,几乎无法选择格式。

Moment 提供了一种方便的方法,可使用 format() 方法根据您的需要格式化日期:

date.format(string)

字符串格式接受我在上面的 “解析日期” 部分中描述的相同格式。

例:

moment().format("YYYY Do MM")

Moment 还提供了一些常量,您可以使用它们来代替编写自己的格式:

常数格式例子
moment.HTML5_FMT.DATETIME_LOCALYYYY-MM-DDTHH:mm2017-12-14T16:34
moment.HTML5_FMT.DATETIME_LOCAL_SECONDSYYYY-MM-DDTHH:mm:ss2017-12-14T16:34:10
moment.HTML5_FMT.DATETIME_LOCAL_MSYYYY-MM-DDTHH:mm:ss.SSS2017-12-14T16:34:10.234
moment.HTML5_FMT.DATEYYYY-MM-DD2017-12-14
moment.HTML5_FMT.TIMEHH:mm16:34
moment.HTML5_FMT.TIME_SECONDSHH:mm:ss16:34:10
moment.HTML5_FMT.TIME_MSHH:mm:ss.SSS16:34:10.234
moment.HTML5_FMT.WEEKYYYY-[W]WW2017-W50
moment.HTML5_FMT.MONTHYYYY-MM2017-12

验证日期

使用 fromNow()。字符串已本地化:

moment('2016-11-23').fromNow() // 两年前
moment('2018-05-23').fromNow() // 一个月以前
moment('2018-11-23').fromNow() // 五分钟前

如果您将 true 传递给 fromNow(),它将仅显示差异,而不会引用将来 / 过去。

moment('2016-11-23').fromNow(true) //2 年
moment('2018-05-23').fromNow(true) //1 个月
moment('2018-11-23').fromNow(true) // 5 个月

处理日期

您可以在日期中添加或减去任何时间:

moment('2016-11-23').add(1, 'years')
moment('2016-11-23').subtract(1, 'years')

您可以使用这些值:

  • years
  • quarters
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
  • milliseconds
4 条回应
  1. 匿名2020-5-6 · 21:33

    感谢,辛苦了!

  2. 匿名2020-5-4 · 5:59

    感谢😊

  3. 匿名2020-5-2 · 12:21

    感谢(❁´ω`❁)

  4. 匿名2020-4-25 · 22:54

    感谢作者♥