惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
美团技术团队
量子位
M
MIT News - Artificial intelligence
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
小众软件
小众软件
博客园 - 司徒正美
罗磊的独立博客
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
博客园 - 聂微东

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅 一次意外的“坠机”引发了我对手机保护壳的深思
Go语言中“糟糕”的日期时间格式化设计
凡梦星尘 · 2024-12-02 · via 热爱生活与梦想

趁着周末的闲暇时间,着手对许久未更新维护的 hugo-theme-next 主题进行相关Issues的修复和优化,其中有块与文章更新时间相关的问题: #109 ,修复时正好发现配置文件中的日期时间格式化有点不宜理解,本来想对它做下调整改进,但却是结果遇到莫明奇妙的错误,深入了解一番才发现,这是Go语言的设计规范要求。好吧,也很是无奈啦。顺便也记录下对于Go语言中日期时间格式化的一些学习和理解,方便后续使用本主题用户阅读与参考。

与其他编程语言不同的是,在Go语言中对日期时间的格式处理,是使用的特定一组数字来代表,而不是大家平时所常见到的yyyyMMddHHmmss等。在Go语言中使用2006-01-02 15:04:05这个时间模板作为格式化依据,其中各部分数字对应的含义说明参考如下:

模板部分说明示例
20064位数年份2024
062位数年份(最后两位)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小时制,配置如下:

1
2
3
4
5
6
7
# 年,月,日及时间的格式化样式
# Format style for year,month,date & time
yearFormat: "2006"
monthFormat: "01月02日"
dateFormat: "2006年01月02日"
# CST (China Standard Time)
timeFormat: "2006年01月02日 15:04:05 CST"