Moment.js 文档

格式 1.0.0+

moment().format();
moment().format(String);

这是最强大的显示选项。 它接受一串标记并将它们替换为相应的值。

moment().format();                                // "2014-09-08T08:02:17-05:00" (ISO 8601, no fractional seconds)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");                       // "Sun, 3PM"
moment().format("[Today is] dddd");               // "Today is Sunday"
moment('gibberish').format('YYYY MM DD');         // "Invalid date"
令牌 输出
M 1 2 ... 11 12
Mo 第 1 第 2 ... 11 号 12 号
MM 01 02 ... 11 12
MMM 一月二月... 十一月十二月
MMMM 一月二月 ... 十一月十二月
Q 1 2 3 4
Qo 第 1 第 2 第 3 第 4
月中日 D 1 2 ... 30 31
Do 第 1 第 2 ... 30 日 31 日
DD 01 02 ... 30 31
一年中的某一天 DDD 1 2 ... 364 365
DDDo 第 1 第 2 ... 第 364 365
DDDD 001 002 ... 364 365
星期几 d 0 1 ... 5 6
do 第 0 第 1 ... 5 号 6 号
dd Su Mo ... Fr Sa
DDD Sun Mon ... 周五周六
dddd 星期天星期一 ... 星期五星期六
星期几(语言环境) e 0 1 ... 5 6
星期几 (ISO) E 1 2 ... 6 7
一年中的一周 w 1 2 ... 52 53
wo 第 1 第 2 ... 52 号 53 号
ww 01 02 ... 52 53
一年中的一周 (ISO) W 1 2 ... 52 53
Wo 第 1 第 2 ... 52 号 53 号
WW 01 02 ... 52 53
YY 70 71 ... 29 30
YYYY 1970 1971 ... 2029 2030
YYYYYY -001970 -001971 ... +001907 +001971
注意: 扩大年限(涵盖自 1970 年 1 月 1 日起向前或向后约 273,790 年的完整时间值范围)
Y 1970 1971 ... 9999 +10000 +10001
注意: 对于 9999 年以后的日期,这符合 ISO 8601 标准
纪元年 y 1 2 ... 2020 ...
时代 N、NN、NNN 公元前公元
注意: 缩写年号
NNNN 在基督之前,Anno Domini
注意: 全年号
NNNNN 公元前公元
注意: 狭义年号
周年 gg 70 71 ... 29 30
gggg 1970 1971 ... 2029 2030
周年 (ISO) GG 70 71 ... 29 30
GGGG 1970 1971 ... 2029 2030
上午/下午 A 上午下午
a 上午下午
小时 H 0 1 ... 22 23
00 01 ... 22 23
h 1 2 ... 11 12
hh 01 02 ... 11 12
k 1 2 ... 23 24
kk 01 02 ... 23 24
分钟 m 0 1 ... 58 59
mm 00 01 ... 58 59
s 0 1 ... 58 59
SS 00 01 ... 58 59
小数秒 S 0 1 ... 8 9
SS 00 01 ... 98 99
SSS 000 001 ... 998 999
SSSS ... SSSSSSSSSS 000[0..] 001[0..] ... 998[0..] 999[0..]
时区 z 或 zz 美国东部标准时间... 太平洋标准时间
注意: 作为1.6.0, z/zz 格式标记已从普通 moment 对象中弃用。 在这里阅读更多相关信息。 但是,如果你将特定时区与 moment-timezone 插件一起使用,它们确实有效。
Z -07:00 -06:00 ... +06:00 +07:00
ZZ -0700 -0600 ... +0600 +0700
Unix 时间戳 X 1360013296
Unix 毫秒时间戳 x 1360013296123

2.0.0 中添加了 X

2.1.0 中添加了 e E gg gggg GG GGGG

2.8.4 中添加了 x

2.10.5 中添加了 SSSSSSSSSSSSS。 它们显示 3 位有效数字,其余数字用零填充。

2.13.0 中添加了 kkk

本地化格式

由于首选格式因区域设置而异,因此有一些标记可用于根据区域设置格式化 moment。

相同格式有大写和小写变体。 小写版本旨在成为其大写版本的缩写版本。

时间 LT 晚上 8:30
以秒为单位的时间 LTS 8:30:下午 25 点
月份数字,日期,年份 L 09/04/1986
l 9/4/1986
月份、月日、年 LL 1986 年 9 月 4 日
ll 1986 年 9 月 4 日
月份、月日、年、时间 LLL 1986 年 9 月 4 日 8:下午 30 点
lll 1986 年 9 月 4 日 8:下午 30 点
月份名称、月份日期、星期几、年份、时间 LLLL 1986 年 9 月 4 日星期四 8:下午 30 点
llll 1986 年 9 月 4 日星期四 8:下午 30 点

l ll lll llll2.0.0 中可用。 在 2.8.4 中添加了 LTS

转义字符

要转义格式字符串中的字符,可以将字符括在方括号中。

moment().format('[today] dddd'); // 'today Sunday'

与 LDML 的异同

Note: 虽然这些日期格式与 LDML 日期格式非常相似,但在月中日、年中日和星期中存在一些细微差别。

有关跨不同语言环境的几个不同日期格式标记的细分,请参阅 这个日期格式标记图表。

格式化速度

要将 Moment.js 格式化速度与其他库进行比较,请查看 与其他库的比较

其他令牌

如果你更喜欢使用 strftime 而不是类似 LDML 的解析标记,则可以使用 Ben Oakes 的插件。 benjaminoakes/moment-strftime.

默认格式

调用没有格式的 moment#format 将默认为 moment.defaultFormat。 开箱即用,moment.defaultFormat 是 ISO8601 格式 YYYY-MM-DDTHH:mm:ssZ

从版本 2.13.0 开始,在 UTC 模式下,默认格式由 moment.defaultFormatUtc 控制,格式为 YYYY-MM-DDTHH:mm:ss[Z]。 这将返回 Z as the offset, instead of +00:00

在某些情况下,本地时区(例如 Atlantic/Reykjavik)可能具有零偏移量,并且将被视为 UTC。 在这种情况下,将 moment.defaultFormatmoment.defaultFormatUtc 设置为使用相同的格式可能会很有用。

改变 moment.defaultFormat 的值只会影响格式化,不会影响解析。 例如:

moment.defaultFormat = "DD.MM.YYYY HH:mm";
// parse with .toDate()
moment('20.07.2018 09:19').toDate() // Invalid date
// format the date string with the new defaultFormat then parse
moment('20.07.2018 09:19', moment.defaultFormat).toDate() // Fri Jul 20 2018 09:19:00 GMT+0300