JavaScript 时间操作必备类库:Moment.js

F2E 前端

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肯定是最方便的。这是格式参考:

格式 含义 例子
YYYY 4位数字年份 2018
YY 2位数字年份 18
M 2位数字月份号,省略前导0 7
MM 2位数字月号 07
MMM 3个字母的月份名称 7月
MMMM 全月名称 七月
dddd 全天名称 周日
gggg 4位数字,星期 2018
gg 两位数字星期 18
w 一年中的周没有前导零 18
ww 一年中以零开头的一周 18
e 星期几,从0开始 4
D 2位天数,省略前导0 9
DD 2位数字的天数 09
Do 天序号 9号
T 指示时间部分的开始
HH 2位数小时(24小时制),从0到23 22
H 2位数小时(24小时制),从0到23,前导0 22
kk 2位数小时(24小时制)从1到24 23
k 2位数小时(24小时制)从1到24,不加0 23
a/A ampm pm
hh 2位数小时(12小时制) 11
mm 2位数字分钟 22
ss 2位数秒 40
s 2位秒,不带前导零 40
S 1位数毫秒 1
SS 2位毫秒 12
SSS 3位数毫秒 123
Z 时区 +02:00
x UNIX时间戳(以毫秒为单位) 1410432140575

设定日期

格式化日期

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

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

date.format(string)

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

例:

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

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

常数 格式 例子
moment.HTML5_FMT.DATETIME_LOCAL YYYY-MM-DDTHH:mm 2017-12-14T16:34
moment.HTML5_FMT.DATETIME_LOCAL_SECONDS YYYY-MM-DDTHH:mm:ss 2017-12-14T16:34:10
moment.HTML5_FMT.DATETIME_LOCAL_MS YYYY-MM-DDTHH:mm:ss.SSS 2017-12-14T16:34:10.234
moment.HTML5_FMT.DATE YYYY-MM-DD 2017-12-14
moment.HTML5_FMT.TIME HH:mm 16:34
moment.HTML5_FMT.TIME_SECONDS HH:mm:ss 16:34:10
moment.HTML5_FMT.TIME_MS HH:mm:ss.SSS 16:34:10.234
moment.HTML5_FMT.WEEK YYYY-[W]WW 2017-W50
moment.HTML5_FMT.MONTH YYYY-MM 2017-12

验证日期

可以使用 isValid()方法检查任何日期的有效性:

moment('2018-13-23').isValid() //false
moment('2018-11-23').isValid() //true

多久以前

使用 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
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://flaviocopes.com/momentjs/

译文地址:https://learnku.com/f2e/t/38841

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 1
cnguu

时间操作类库新宠:date-fns

区别可阅读这篇 博客

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!