在网站运营中,经常需要在页面的不同位置动态展示当前年份或特定格式的日期时间,无论是用于页脚的版权声明、文章的发布更新时间,还是各类事件的时间点。安企CMS(AnQiCMS)提供了灵活而强大的模板标签,让您可以轻松地实现这些需求。
AnQiCMS 的模板系统借鉴了Django模板引擎的语法,这意味着您可以使用双花括号 {{变量}} 来输出变量,并通过 {% 标签 %} 来调用功能性标签。在处理日期和时间时,理解其核心的时间格式化规则至关重要。
理解Go语言的日期时间格式化
AnQiCMS 的时间格式化遵循Go语言的独特约定,它不使用常见的 Y-m-d 或 yyyy-MM-dd 这类占位符,而是使用一个特定的参照时间 2006-01-02 15:04:05。这个参照时间中的每个数字都代表了日期时间的一个组成部分,您只需将您希望显示的格式替换为对应的数字即可。
例如:
- 年:
2006 - 月:
01(带前导零) 或1(不带前导零) - 日:
02(带前导零) 或2(不带前导零) - 小时:
15(24小时制,带前导零) 或03(12小时制,带前导零) - 分钟:
04(带前导零) - 秒:
05(带前导零) - 上午/下午:
PM(与03配合使用)
掌握了这个规则,您就可以随心所欲地组合出各种日期时间格式。
在模板中显示当前年份
要在网站页面的任何位置显示当前的年份,例如在页脚用于版权声明,您可以直接使用 {% now %} 标签配合Go语言的年份格式化字符 2006。
© {% now "2006" %} 您的网站名称. All Rights Reserved.
这样,您的网站页脚就会自动显示当前的年份,无需手动更新,例如 © 2023 您的网站名称. All Rights Reserved.。
显示当前指定格式的日期时间
如果您需要在页面上展示当前的完整日期和时间,比如在页面顶部显示访问时间,或者在特定模块中提供时效性信息,{% now %} 标签同样能够胜任。您只需提供完整的Go语言日期时间格式字符串。
例如,要显示当前精确到秒的日期和时间,格式为 年-月-日 时:分:秒:
当前时间:{% now "2006-01-02 15:04:05" %}
页面上将会显示类似 当前时间:2023-10-26 15:30:00 的内容。
如果您需要其他常见的日期时间格式,可以这样组合:
- 仅显示日期(例如:2023-10-26):
发布日期:{% now "2006-01-02" %} - 显示不带前导零的月份和日期(例如:10/26/2023):
活动日期:{% now "1/2/2006" %} - 显示12小时制时间(例如:03:30 PM):
更新时间:{% now "03:04 PM" %}
格式化内容中的时间戳
在安企CMS中,像文章、产品这样的内容,其发布时间或更新时间通常以10位时间戳的形式存储在数据库中,例如 item.CreatedTime 或 item.UpdatedTime。当您在模板中遍历这些内容并需要展示它们的时间时,就需要使用 {{stampToDate()}} 这个专门用于格式化时间戳的标签。
{{stampToDate()}} 标签需要两个参数:
- 时间戳变量:例如
item.CreatedTime。 - Go语言格式字符串:与
{% now %}标签使用的格式规则相同。
假设您正在循环显示文章列表,并且希望展示每篇文章的发布日期和详细的更新时间:
{% archiveList archives with type="list" limit="10" %}
{% for item in archives %}
<article>
<h2><a href="{{item.Link}}">{{item.Title}}</a></h2>
<p>发布于:{{stampToDate(item.CreatedTime, "2006年01月02日")}}</p>
<p>最后更新:{{stampToDate(item.UpdatedTime, "2006-01-02 15:04:05")}}</p>
<p>{{item.Description}}</p>
</article>
{% endfor %}
{% endarchiveList %}
通过这段代码,每篇文章的发布日期会以 2023年10月26日 的形式展现,而更新时间则会以 2023-10-26 15:30:00 这样的精确格式显示。
小结
安企CMS的模板系统通过 {% now %} 标签和 {{stampToDate()}} 过滤器,配合Go语言简洁而独特的日期时间格式化规则,为您提供了极大的灵活性,无论是显示当前时间还是格式化内容中存储的时间戳,都能够轻松实现。掌握这些基本技巧,将有助于您构建出信息丰富、用户体验更佳的网站。
常见问题 (FAQ)
Q1: 为什么我的日期格式化没有生效,或者显示了奇怪的数字?
A1: 这很可能是因为您在格式化字符串时没有严格遵循Go语言的参照时间 2006-01-02 15:04:05。请确保您的格式字符串中,年份、月份、日期等都使用了对应参照时间中的数字(例如,年份必须是 2006 而不是 YYYY 或 yy)。另一个可能的原因是,您尝试用 {{stampToDate()}} 格式化的变量本身不是一个有效的时间戳。
Q2: 我能显示当前时间的同时,加入一些自定义文本吗?
A2: 当然可以。{% now %} 标签只会输出格式化后的时间字符串,您可以将它嵌入到任何文本内容中,例如:
欢迎访问,今天是:{% now "2006年01月02日" %},祝您心情愉快!
Q3: 如何在文章或产品详情页显示该内容的发布年份和月份?
A3: 在文章或产品详情页,您可以通过 archive.CreatedTime 获取到该内容的发布时间戳。然后结合 {{stampToDate()}} 标签和Go语言格式化字符串来显示,例如:
{{stampToDate(archive.CreatedTime, "2006年01月")}} 即可显示如 2023年10月 的内容。