前端常用的时间格式配置格式

本文最后更新于:2021年10月1日 下午

概述

我现在用的很多软件(如:Code、Obsidian、PicGo)或前端浏览器插件(如:Markdownload)或 静态站点生成器(如:Hexo)都是基于 JavaScript 技术的。这里配置项常常会涉及到时间格式的配置。而与时间有关的往往都会用到 moments.js 这个库。

Moments.js 已经在数百万个项目中成功使用,其为使 web 上的日期和时间更好做出了贡献。截至 2020 年 9 月,Moment 每周下载量超过 1200 万次!

Moments.js 格式

这是最健壮的显示选项。它接受一个 token 字符串,并用它们对应的值替换它们。

1
2
3
4
5
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"
Token Output
月份 M 1 2 … 11 12
Mo 1st 2nd … 11th 12th
MM 01 02 … 11 12
MMM Jan Feb … Nov Dec
MMMM January February … November December
每月几日 D 1 2 … 30 31
Do 1st 2nd … 30th 31st
DD 01 02 … 30 31
星期几 d 0 1 … 5 6
do 0th 1st … 5th 6th
dd Su Mo … Fr Sa
ddd Sun Mon … Fri Sat
dddd Sunday Monday … Friday Saturday
每年的第几周 w 1 2 … 52 53
wo 1st 2nd … 52nd 53rd
ww 01 02 … 52 53
YY 70 71 … 29 30
YYYY 1970 1971 … 2029 2030
Y 1970 1971 … 9999 +10000 +10001
: 本文件符合 ISO 8601 标准,适用于 9999 年以后的日期
AM/PM A AM PM
a am pm
H 0 1 … 22 23
HH 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
Fractional Second S 0 1 … 8 9
SS 00 01 … 98 99
SSS 000 001 … 998 999
SSSS … SSSSSSSSS 000[0…] 001[0…] … 998[0…] 999[0…]
时区 z or zz EST CST … MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated from plain moment objects. Read more about it here. However, they do work if you are using a specific time zone with the moment-timezone addon.
Z -07:00 -06:00 … +06:00 +07:00
ZZ -0700 -0600 … +0600 +0700
Unix Timestamp X 1360013296
Unix Millisecond Timestamp x 1360013296123

本地化的格式

由于首选格式根据语言环境的不同而不同,因此可以使用一些标记来根据语言环境对某个时刻进行格式化。

在相同的格式上有大写和小写的变化。小写版本是其大写版本的缩写版本。

Time LT 8:30 PM
Time with seconds LTS 8:30:25 PM
Month numeral, day of month, year L 09/04/1986
l 9/4/1986
Month name, day of month, year LL September 4, 1986
ll Sep 4, 1986
Month name, day of month, year, time LLL September 4, 1986 8:30 PM
lll Sep 4, 1986 8:30 PM
Month name, day of month, day of week, year, time LLLL Thursday, September 4, 1986 8:30 PM
llll Thu, Sep 4, 1986 8:30 PM

默认格式

调用没有格式的 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 作为偏移量,而不是 +00:00

举例

比如:

  • 我的浏览器插件配置为:YYYY-MM-DD HH:mm:ss, 显示效果为:2021-09-18 15:36:16
  • 我的 obsidian 模板插件配置为:YYYY-MM-DD_ddd,显示效果为:2021-09-14_周二
  • 我的博客配置为:LL a,显示效果为:2021 年 9 月 18 日 下午

参考链接

📑参考链接:

Moment.js format


前端常用的时间格式配置格式
https://ewhisper.cn/posts/11415/
作者
东风微鸣
发布于
2021年9月18日
许可协议