原文地址: https://tricks.one/post/date-format-in-hugo-or-go-templates/
收藏时间: 2023-01-29 10:16:08
文章分类: hugo
文章标签:hugo
hugo / go 模版中的日期格式
最近想自己做一个 hugo 的主题,结果第一天就卡关,看似很简单的日期时间显示就卡壳了很久, 现在分享一下,如何在 hugo 的模版中正常的显示日期时间
1 环境
本问题应该与 go 模版对日期的处理方法有关,所以如果使用到任何版本的 go 或 hugo 都可能遇到。
2 问题
首先我们日期的数据是这样子的
|
|
在 hugo 的模版中,我们一般可以用以下形式来格式化显示时间
|
|
此日期格式来自这里,是不是很酷:给定一个范例,hugo就可以举一反三出日期格式, 注意形式是这个样子没错,但是实际这并不能正确显示时间,hugo 解析后,我们会得到以下结果
|
|
这是一个非常让人迷茫的结果,最早我认为是引用网页举例错了,于是自己整理了一下日期格式
|
|
结果如下
|
|
现在比较让人怀疑的是 hugo 的解析错误或是使用不当了。
3 解决
站在事后我们去看这个问题,我们更清楚为什么会是当前的情况,如果以 hugo date format error 这些关键字去搜索的话,基本是没办法找到我们想要的结果的,因为这不是一个错误,是设计如此。 这篇文章详细地以试错的方法讨论了这个问题,我们才知道, 必须以 2006年1月2日3时4分5秒 周一 下午 的格式 去描述时间的格式,hugo / go 才能正常解析我们给定的日期格式, 所以如果要描述 Sun, Feb 11, 2018 的格式,需要写成以下形式
|
|
同理 2019-07-13 需要写成以下形式
|
|
是不是觉得顿时没有那么神奇了,那么为什么是 2006 年呢,我想有两个原因
- 2006年1月2日 是周一
- 既然月日时分秒是12345了,那么年要么是 0,要么是 6 了,而 6 正好满足第一条
当然以上只是我的猜测,完整的对应关系,上面提到的引用文章里有描述, 或者简单一点,只要记得以下一段即可
|
|
当知道这个规律后,我们再去推导之前令人迷茫的两个输出结果,是不是就不再迷茫了。
4 结论
日期时间格式可能是每一个 go 程序员都遇到过的问题,但是对于一个 hugo 使用者来说, 未免不太友好,如果你正在为这个问题烦恼,希望本文会对你有所帮助。