在网站运营中,灵活地显示当前年份或将特定时间格式化输出是常见的需求,无论是版权声明中的年份自动更新,还是文章详情页中清晰的发布时间展示。AnQiCMS 提供了两种主要的方式来满足这些需求,它们都简单易用,并遵循 Go 语言优雅的时间处理方式。
方法一:直接获取并显示当前年份或时间 ({% now %} 标签)
当您需要在模板中直接获取并显示当前的年份或者当前精确到秒的时间时,{% now %} 标签是您的首选。这个标签非常直观,您只需在其中指定您想要的 Go 语言风格的时间格式化字符串即可。系统会根据服务器的当前时间,按照您定义的格式输出。
例如,如果您只想在网站页脚显示当前的年份,用于版权声明,您可以这样编写:
© {% now "2006" %} 您的公司名称. All Rights Reserved.
运行后,如果当前年份是 2024 年,它会自动显示为:
© 2024 您的公司名称. All Rights Reserved.
如果您需要显示完整的当前日期,例如“2024-07-29”:
今天的日期是:{% now "2006-01-02" %}
运行后,它会显示为:
今天的日期是:2024-07-29
如果需要显示当前的精确时间,例如“10:30:45”:
当前时间是:{% now "15:04:05" %}
运行后,它会显示为:
当前时间是:10:30:45
{% now %} 标签的灵活性在于它能根据您的格式化字符串输出各种形式的当前时间信息,极大地方便了动态内容的展示。
方法二:格式化已有时间戳变量 ({{ stampToDate() }} 函数)
更多时候,我们并不是要显示当前时间,而是需要将数据库中存储的时间戳(例如文章的发布时间 CreatedTime、更新时间 UpdatedTime)以人类可读的格式展现出来。AnQiCMS 为此提供了 {{ stampToDate() }} 函数。
这个函数接受两个参数:第一个是您要格式化的时间戳变量(通常是一个 10 位或 13 位的数字),第二个同样是 Go 语言风格的时间格式化字符串。
假设您在循环文章列表 archives 时,希望显示每篇文章的发布时间,格式为“2024年07月29日 10时30分”:
{% archiveList archives with type="list" limit="5" %}
{% for item in archives %}
<div>
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<p>发布于:{{ stampToDate(item.CreatedTime, "2006年01月02日 15时04分") }}</p>
</div>
{% endfor %}
{% endarchiveList %}
运行后,每篇文章的发布时间将按照指定的中文格式显示。
如果您只想显示日期部分,例如“2024/07/29”:
更新时间:{{ stampToDate(archive.UpdatedTime, "2006/01/02") }}
这将把文章的更新时间戳格式化为 2024/07/29。
深入理解时间格式化字符串 (Golang 风格)
AnQiCMS 沿用了 Go 语言独特的时间格式化方式。与许多编程语言使用 ‘Y-m-d H:i:s’ 这种符号占位符来定义时间格式不同,Go 语言采用一个固定的参考时间 2006-01-02 15:04:05 来定义格式。您所编写的格式化字符串,其实是告诉 Go 语言如何按照这个参考时间的各部分来组合您想要的时间显示效果。
- 2006 代表年份(Year)
- 01 代表月份(Month),前面带零的两位数
- 02 代表日期(Day),前面带零的两位数
- 15 代表小时(Hour),24小时制,前面带零的两位数
- 04 代表分钟(Minute),前面带零的两位数
- 05 代表秒(Second),前面带零的两位数
通过组合这些参考数字,您可以创造出各种时间显示格式:
"2006":仅显示年份,如2024"01-02":显示月日,如07-29"2006-01-02":标准日期格式,如2024-07-29"2006年01月02日":中文日期格式,如2024年07月29日"15:04":小时分钟,如10:30"2006-01-02 15:04:05":完整日期时间,如2024-07-29 10:30:45
掌握了 Go 语言的这个参考时间格式,您就能随心所欲地控制 AnQiCMS 模板中时间和日期的显示方式。
总结
无论是需要显示当前的年份或时间,还是将数据库中存储的时间戳格式化输出,AnQiCMS 都提供了直观且功能强大的模板标签和函数。通过 {% now %} 标签和 {{ stampToDate() }} 函数,配合 Go 语言独特但灵活的时间格式化字符串,您可以轻松地在网站模板中实现各种时间信息的动态展示,为用户提供更好的浏览体验。
常见问题 (FAQ)
- 为什么时间格式化字符串是 ‘2006-01-02 15:04:05’ 这种数字组合,而不是 ‘Y-m-d H:i:s’?
AnQiCMS 采用了 Go 语言的时间格式化标准。在 Go 语言中,没有像其他语言那样使用字母来代表时间单位(如 Y 代表年),而是用一个固定的参考时间
2006年1月2日 15点04分05秒来作为格式化的模板。您在格式化字符串中写入的每一个数字(如2006、01、02等),都是在告诉 Go 语言,您希望将相应的时间单位(年、月、日等)显示在那个位置,并按照该数字的格式