Go语言中“糟糕”的日期时间格式化设计
趁着周末的闲暇时间,着手对许久未更新维护的hugo-theme-next
主题进行相关Issues
的修复和优化,其中有块与文章更新时间相关的u问题:
#109
,修复时正好发现配置文件中的日期时间格式化有点不宜理解,本来想对它做下调整改进,但却是结果遇到莫明奇妙的错误,深入了解一番才发现,这是Go语言的设计规范要求。好吧,也很是无奈啦。顺便也记录下对于Go语言中日期时间格式化的一些学习和理解,方便后续使用本主题用户阅读与参考。
与其他编程语言不同的是,在Go语言中对日期时间的格式处理,是使用的特定一组数字来代表,而不是大家平时所常见到的yyyy
、MM
、dd
、HH
、mm
、ss
等。在Go语言中使用2006-01-02 15:04:05
这个时间模板作为格式化依据,其中各部分数字对应的含义说明参考如下:
模板部分 | 说明 | 示例 |
---|---|---|
2006 | 4位数年份 | 2024 |
06 | 2位数年份(最后两位) | 24 |
01 | 月份(用两位数表示,1月) | 01 |
1 | 月份(用一位数表示) | 1 |
02 | 日(用两位数表示,2号) | 02 |
2 | 日(用一位数表示) | 2 |
15 | 小时(24小时制) | 15 |
03 | 小时(12小时制,前面补零) | 03 |
3 | 小时(12小时制,不补零) | 3 |
04 | 分钟(两位数) | 04 |
05 | 秒(两位数) | 05 |
PM | 上下午 | PM |
pm | 上下午(小写) | pm |
-07:00 | 时区偏移 | -08: 00 |
MST | 时区名 | UTC |
不过Go语言对于日期时间格式化的这种设计风格,确实有些令人无语,但只能是自己慢慢理解和适应。可以尝试通过掌握以下几点会帮助更快适应:
- 记住基础时间
2006-01-02 15:04:05
,它是所有模板的起点; - 使用
24
小时制时,用15
表示;使用12
小时制时,用03
表示; - 要加上
AM/PM
时,用大写或小写的PM
。 - 时区信息用
-07:00
表示偏移,用MST
表示缩写。 - **最重要的:**模板中的数字部分不能任意乱写,只能调整顺序或是连接符号;
另外在
Go语言官方文档
中有对日期时间格式常用模板的描述,有需要使用的小伙伴可以自行翻阅一下。
参考上面对Go语言日期时间格式化的学习,将本站点的日期和时间模板更新为中国标准时区的24小时制,配置如下:
|
|