在网站内容中展示时间,无论是文章发布日期、产品更新时间,还是页面实时加载时间,都能大大提升用户体验和信息的时效性。AnQiCMS作为一个基于Go语言开发的内容管理系统,在模板中处理时间和日期非常直观和灵活。这篇文章将向你介绍如何在AnQiCMS模板中显示当前时间和格式化存储的时间戳。
一、在页面上显示当前实时时间
如果你需要在页面上显示用户访问时的实时时间,AnQiCMS提供了一个简洁的{% now %}标签来帮助你实现。这个标签的作用是获取并显示服务器当前的日期和时间。
它的用法十分直接,只需要在标签后跟着一个字符串,这个字符串就是你希望时间显示的格式。
基本用法示例:
<p>页面加载时间:{% now "2006年01月02日 15:04:05" %}</p>
你可能注意到,这里的时间格式字符串“2006年01月02日 15:04:05”看起来有些特别,它不是我们常见的Y-m-d H:i:s,而是Go语言特有的日期时间格式化方式。你只需要记住这个基准时间“2006-01-02 15:04:05”作为模板,然后根据你需要显示的部分来替换其中的数字和符号,就可以构建你想要的格式了。
例如,如果你只想要显示当前的年份,可以这样写:
<p>当前年份:{% now "2006" %}</p>
如果想显示完整的年月日时分秒:
<p>当前时间:{% now "2006-01-02 15:04:05" %}</p>
这个{% now %}标签非常适合用于在页脚显示版权年份,或者在页眉显示一个动态的欢迎时间等场景。
二、格式化显示存储的时间戳
在AnQiCMS中,文章、产品或其他内容在发布或更新时,其时间信息(例如CreatedTime和UpdatedTime)通常以10位Unix时间戳的形式存储在数据库中。为了在前端页面上清晰、易读地展示这些时间,我们需要使用{{stampToDate}}函数进行格式化。
这个函数接收两个参数:第一个是要格式化的10位时间戳,第二个是与{% now %}标签相同的Go语言时间格式字符串。
基本用法示例(以文章发布时间为例):
假设你正在使用archiveList或archiveDetail标签来获取文章数据,其中archive.CreatedTime就是文章的创建时间戳。
<p>文章发布于:{{ stampToDate(archive.CreatedTime, "2006-01-02") }}</p>
如果你希望显示文章的更新时间,并且只在更新时间与创建时间不同时才显示,可以这样处理:
{% if archive.UpdatedTime != archive.CreatedTime %}
<p>最近更新于:{{ stampToDate(archive.UpdatedTime, "2006年1月2日 15:04") }}</p>
{% endif %}
这里,我们首先判断UpdatedTime是否与CreatedTime不同,以避免重复显示相同的时间。如果存在差异,再使用{{stampToDate}}函数将其格式化为我们需要的样式。
三、掌握Go语言的时间格式化模板
无论是在{% now %}标签还是{{stampToDate}}函数中,时间格式化的核心都在于Go语言的基准时间模板。记住“2006-01-02 15:04:05”这个特定的日期和时间,并用它作为你的“参照物”来构建你需要的格式。
这里是一些常用格式字符串及其对应的输出效果,帮助你快速理解和应用:
- “2006-01-02”:输出完整的年月日,例如 “2023-10-26”
- “15:04:05”:输出时分秒,例如 “10:30:45”
- “2006年01月02日”:输出中文的年月日,例如 “2023年10月26日”
- “01/02 15:04”:输出月日和时分,例如 “10⁄26 10:30”
- “Mon Jan _2 15:04:05 2006”:输出完整的英文日期和时间,例如 “Thu Oct 26 10:30:45 2023”
- “Monday, 02-Jan-06 15:04:05 MST”:另一种英文日期时间格式,例如 “Thursday, 26-Oct-23 10:30:45 CST”
- “3:04PM”:12小时制时间,例如 “10:30AM”
- ”_2”:单独的日期,例如 “26”
你可以根据页面设计和用户需求,自由组合这些元素,创建出各种各样的时间显示效果。
四、综合应用示例
让我们通过一个简单的模板片段,看看如何在实际页面中结合使用这些时间显示和格式化方法:
<main>
<header>
<h1>AnQiCMS 网站首页</h1>
<p>当前服务器时间:{% now "2006年01月02日 星期一 15:04:05" %}</p>
</header>
<section class="latest-articles">
<h2>最新文章</h2>
{% archiveList articles with type="list" limit="3" %}
{% for article in articles %}
<article class="article-card">
<h3><a href="{{ article.Link }}">{{ article.Title }}</a></h3>
<p class="article-meta">
发布于:{{ stampToDate(article.CreatedTime, "2006-01-02 15:04") }}
{% if article.UpdatedTime != article.CreatedTime %}
<span>(更新于:{{ stampToDate(article.UpdatedTime, "2006年1月2日") }})</span>
{% endif %}
</p>
<p>{{ article.Description|truncatechars:100 }}</p>
<a href="{{ article.Link }}">阅读更多</a>
</article>
{% endfor %}
{% empty %}
<p>暂时没有文章可供显示。</p>
{% endarchiveList %}
</section>
<footer>
<p>© {% now "2006" %} AnQiCMS. 版权所有。</p>
</footer>
</main>
在这个示例中,我们展示了如何在页眉显示实时的精确时间,如何在文章列表中显示文章的发布日期和有条件的更新日期,并在页脚动态显示当前的年份。这些都通过AnQiCMS提供的灵活标签和函数轻松实现。
通过{% now %}标签获取实时时间,以及{{stampToDate}}函数格式化存储的时间戳,AnQiCMS为你的网站提供了强大而易用的时间显示功能。掌握这些技巧,将帮助你更好地构建动态且信息丰富的网站。
常见问题 (FAQ)
1. Go语言的时间格式化规则为什么这么特别,我总是记不住“2006-01-02 15:04:05”?
Go语言的时间格式化确实