信息技术笔记:日期格式化 - haojun0823.xyz
文档原创

信息技术笔记:日期格式化

全面介绍计算机日期格式化的各种标记与使用场景

1. 前言

因为Obisidian这个软件计时采用YYYY-MM dd HH:mm:ss格式的日期而Hugo不怎么能识别这种日期格式,所以我把日期格式化的相关知识写下来以备日后使用。

以下内容涵盖99%的计算机日期格式化场景(其余1%为不遵守或者日期格式较为独特的情况)。


1.1. 注意事项

  • 语言/库差异:不同编程语言的标记可能略有不同(如 Java 用 yyyy 而 JavaScript 用 YYYY)。

  • 大小写敏感:例如 MM(月份)和 mm(分钟)完全不同。

  • 兼容性:带 T 和 Z 的格式是 ISO 8601 标准,适合跨系统传输;其他格式可能更适合显示。


2. 教程

2.1. 日期部分

标记字符串格式化含义示例(2025-07-22)
YYYY%Y4位数年份2025
YY%y2位数年份25
MMMM%B月份完整名称January
MMM%b月份缩写Jan
MM%m2位数月份(补零)07
M%-m月份(不补零)7
DDD%j一年中的第几天?001-366区间
DD%d2位数日期(补零)22
D%-d日期(不补零)22
dddd%A星期几的全称Tuesday
ddd%a星期几的缩写Tue(Tuesday)
d%w星期几0-6区间,0是星期日
E%uISO的星期几1-7区间,1是星期一,7是星期日

2.2. 时间部分

标记字符串格式化含义示例(14:05:30)
HH%H24小时制(补零)14
H%-H24小时制(不补零)14
hh%i12小时制(补零)02
h%-i12小时制(不补零)2
mm%M分钟(补零)05
m%-M分钟(不补零)5
ss%S秒(补零)30
s%-S秒(不补零)30
SSS%f毫秒(3位数)123
A%p上午/下午(大写)PM
a%P上午/下午(小写)pm
%% SSS在一部分平台可以通过%3f来截取位数。 %%
%% A和a的字符串格式化%p与%P要依据平台和本地设置 %%

2.3. 时区部分

标记字符串格式化含义示例
ZZ%z时区偏移+0800
Z%:zUTC 时区(+00:00+08:00(UTC时间,ISO标准)
z%Z时区名称CST,EST(不推荐)
UTCUTC显式标记 UTC 时区UTC

2.4. 分隔符和特殊字符

字符用途示例
-日期分隔符2025-07-22
/替代日期分隔符07/22/2025
:时间分隔符14:05:30
T分隔日期和时间(ISO 8601)2025-07-22T14:05:30
(空格)替代分隔符(非标准)2025-07-22 14:05:30

2.5. 常见格式示例

使用场景推荐格式示例输出
日期存储(数据库/API)YYYY-MM-DD2025-07-22
完整日期时间YYYY-MM-DDTHH:mm:ssZ2025-07-22T14:05:30+08:00
可读日期DD MMM YYYY22 Jul 2025
带时分的时间hh:mm A02:05 PM
文件命名YYYYMMDD_HHmmss20250722_140530
日志时间戳YYYY-MM-DD HH:mm:ss.SSS2025-07-22 14:05:30.375
  1. ISO 8601 标准格式

    • YYYY-MM-DDTHH:mm:ssZ(UTC 时间)

    • YYYY-MM-DDTHH:mm:ss+08:00(带时区,北京时间)

  2. 人类可读格式

    • YYYY-MM-DD HH:mm:ss(无时区)

    • DD/MM/YYYY hh:mm A(如 22/07/2025 02:05 PM)西方国家常把日期和月份倒过来看,12小时格式,用AM和PM标记上午/下午。

  3. 文件名友好格式

    • YYYYMMDD_HHmmss(如 20250722_140530

    • 转换后显示为:19970823_111500

  4. 个人习惯

    • YYYY/MM/DD HH:mm:ss(显示2025/07/22 13:38:56,这个格式我常在Excel中写,我认为是可读性相当好的一种表达方式,适合所有人阅读)

    • YYYY-MM-DDTHH:mm:ss.SSSZ(万金油,受用最广,符合ISO 8601 国际标准,可以被各种编程语言与API转换识别,SQL/NoSQL,日志系统均采用这种方式存储时间)


3. 总结

对于日期格式如何表现,要考虑的情况无非以下三点:

  1. 使用场景:如果是针对普通用户阅读(例如Excel),没有时区等严格要求,那么请使用易于阅读的方式,如果用于程序设计,那么严格的计时有助于你的程序运行的更加标准。

  2. 程序支持:例如Hugo的时间支持对ISO 8601标准非常适配,但Obsidian又不用这种计时方法,因此需要严谨统一,另外文件在文件系统中一般不能用冒号作为名称,所以也需要其他符号替代。

  3. 文化差异:同考虑东西文化差异,例如西方国家喜欢先写日期再写月份,或者 22 July来表示7月22日,用AM/PM配合12小时格式来表达时间。

总之,日期格式化很繁琐,我个人建议只需要了解ISO 8601这一种和YYYY/MM/dd HH:mm:ssYYYY-mm-dd即可。

切换主题

点击选择主题预览