在安企CMS的日常内容运营中,我们经常需要将发布时间、更新时间等原始的时间戳数据,以用户更习惯、更易读的方式展现出来。原始的时间戳,例如1609470335这样的纯数字序列,对普通用户来说毫无意义。为了解决这个问题,安企CMS提供了一个非常实用的模板标签——stampToDate,它能够帮助我们将这些数字时间戳转化为格式清晰、用户友好的日期和时间显示。
stampToDate:让时间戳变得可读
stampToDate标签的核心作用,就是将一个10位或13位(如果内部处理为毫秒)的Unix时间戳,按照我们指定的格式进行美化输出。这极大地提升了网站内容的专业度和用户体验。想象一下,如果文章的发布时间只显示一串数字,用户可能会感到困惑。而如果显示为“2023年10月27日 10:30”或“10/27/2023”,则一目了然。
它的使用方式非常直观:{{stampToDate(时间戳, "格式")}}。这里,你需要提供两个参数:
- 时间戳: 通常是AnQiCMS中
CreatedTime、UpdatedTime这类字段返回的数字。 - 格式: 这部分是定义你希望日期时间如何显示的“模板”。
深入理解格式化规则:Go语言的特殊“魔法数字”
安企CMS的stampToDate标签在格式化时,遵循Go语言独特的时间格式化规则。与我们可能熟悉的YYYY-MM-DD、HH:MM:SS等占位符不同,Go语言使用一个固定的参考时间——2006年01月02日 15时04分05秒(也称作“魔法数字”或“参考时间”)作为模板。
理解这个参考时间的关键在于,其中每个数字或部分都代表了一个特定的时间组成部分:
2006代表年份 (Year)01代表月份 (Month),带前导零02代表日期 (Day),带前导零15代表小时 (Hour),24小时制,带前导零04代表分钟 (Minute),带前导零05代表秒 (Second),带前导零
如果你想要显示其他格式,只需要用这些“魔法数字”的对应部分来构建你的格式字符串即可。例如,如果你想显示“年份-月份-日期”,那么格式字符串就是"2006-01-02"。
常用格式化示例
下面是一些常见的格式化方式,以及它们对应的格式字符串和显示效果:
只显示日期(年-月-日):
{{stampToDate(item.CreatedTime, "2006-01-02")}}例如:2023-10-27显示完整日期和时间:
{{stampToDate(item.UpdatedTime, "2006-01-02 15:04:05")}}例如:2023-10-27 10:30:00中文日期和时间格式:
{{stampToDate(archive.CreatedTime, "2006年01月02日 15时04分")}}例如:2023年10月27日 10时30分自定义分隔符的日期:
{{stampToDate(item.CreatedTime, "2006/01/02")}}例如:2023/10/27只显示小时和分钟:
{{stampToDate(item.CreatedTime, "15:04")}}例如:10:30显示星期几(英文):
{{stampToDate(item.CreatedTime, "Mon Jan 02 2006")}}例如:Fri Oct 27 2023(这里的Mon代表星期,Jan代表月份的英文简写,02是日期)
在模板中的实际应用
在安企CMS的模板中,我们通常会在循环文档列表(例如archiveList)或显示文档详情(例如archiveDetail)时用到stampToDate标签。
例如,在一个文章列表页,你可能这样显示每篇文章的发布时间:
{% archiveList archives with type="page" limit="10" %}
{% for item in archives %}
<div class="article-card">
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<p class="meta-info">
发布于:{{ stampToDate(item.CreatedTime, "2006年01月02日 15:04") }}
浏览量:{{item.Views}}
</p>
<p>{{item.Description}}</p>
</div>
{% endfor %}
{% endarchiveList %}
而在文章详情页,显示文章的更新时间可以这样:
<article>
<h1>{% archiveDetail with name="Title" %}</h1>
<div class="article-meta">
发布时间:{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04:05") }}
更新时间:{{ stampToDate(archive.UpdatedTime, "2006-01-02 15:04:05") }}
浏览量:{% archiveDetail with name="Views" %}
</div>
<div class="article-content">
{% archiveDetail articleContent with name="Content" %}{{articleContent|safe}}
</div>
</article>
通过合理运用stampToDate标签及其格式化规则,我们可以确保网站上的时间信息始终以清晰、专业且用户友好的方式呈现,从而提升整体的用户体验。
常见问题 (FAQ)
- 为什么我不能使用
YYYY-MM-DD这样的格式占位符? 安企CMS的stampToDate标签采用Go语言的时间格式化标准,它不识别Y、M、D等传统占位符。相反,你需要使用一个固定的参考时间(2006年01月02日 15时04分05秒)来构建你的格式字符串。例如,如果你想显示四位年份,就使用2006;想显示两位月份,就使用01,以此类推。