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
- The RFC 2822 时间日期格式
- 日期对象接受的格式
ISO 8601 肯定是最方便的。这是格式参考:
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 | am 或 pm | 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 |
验证日期
使用 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
感谢,辛苦了!
感谢?
感谢(❁´ω`❁)
感谢作者♥