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 %Y 4位数年份 2025 YY %y 2位数年份 25 MMMM %B 月份完整名称 January MMM %b 月份缩写 Jan MM %m 2位数月份(补零) 07 M %-m 月份(不补零) 7 DDD %j 一年中的第几天? 001-366区间 DD %d 2位数日期(补零) 22 D %-d 日期(不补零) 22 dddd %A 星期几的全称 Tuesday ddd %a 星期几的缩写 Tue(Tuesday) d %w 星期几 0-6区间,0是星期日 E %u ISO的星期几 1-7区间,1是星期一,7是星期日 2.2. 时间部分 标记 字符串格式化 含义 示例(14:05:30) HH %H 24小时制(补零) 14 H %-H 24小时制(不补零) 14 hh %i 12小时制(补零) 02 h %-i 12小时制(不补零) 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 %:z UTC 时区(+00:00) +08:00(UTC时间,ISO标准) z %Z 时区名称 CST,EST(不推荐) UTC UTC 显式标记 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-DD 2025-07-22 完整日期时间 YYYY-MM-DDTHH:mm:ssZ 2025-07-22T14:05:30+08:00 可读日期 DD MMM YYYY 22 Jul 2025 带时分的时间 hh:mm A 02:05 PM 文件命名 YYYYMMDD_HHmmss 20250722_140530 日志时间戳 YYYY-MM-DD HH:mm:ss.SSS 2025-07-22 14:05:30.375 ISO 8601 标准格式
...