作为一位资深的网站运营专家,我深知内容呈现的细节对于用户体验和信息传达至关重要。安企CMS(AnQiCMS)凭借其灵活强大的模板引擎,为我们提供了极大的自由度。今天,我们就来深入探讨一个在内容运营中常见且实用的需求:如何利用stampToDate函数,将文档的UpdatedTime格式化为包含时分秒的完整日期时间。
安企CMS模板中的时间处理艺术
在安企CMS中,文档的创建时间(CreatedTime)和更新时间(UpdatedTime)通常以UNIX时间戳(一个代表自1970年1月1日00:00:00 UTC以来秒数的整数)的形式存储在数据库中。虽然这种格式对于系统内部处理非常高效,但对于终端用户而言,一串冰冷的数字显然不够直观和友好。想象一下,用户看到“最后更新:1678886400”时,他们需要经过心算或工具转换才能理解其含义。这不仅影响了阅读体验,也降低了内容的可读性和专业性。
因此,将这些原始时间戳转换为我们日常习惯的、包含年、月、日、时、分、秒的日期时间格式,是提升网站用户体验、让信息一目了然的关键一步。安企CMS为此提供了一个强大的内置模板函数:stampToDate。
核心利器:stampToDate 函数详解
stampToDate是安企CMS模板引擎中专门用于时间戳格式化的函数。它的设计简洁而高效,能够将传入的时间戳按照你指定的格式输出。
它的基本语法是:
{{stampToDate(时间戳, "格式")}}
这里有两个关键参数:
- 时间戳(
时间戳):这通常是一个代表日期时间的整数值,比如我们文章主题中的UpdatedTime。在模板中,它会是一个变量,如archive.UpdatedTime或item.UpdatedTime。 - 格式(
"格式"):这是一个字符串,用于定义你希望时间戳被格式化后的具体显示样式。这一点是stampToDate最独特,也最容易让初学者感到困惑的地方。安企CMS的模板引擎底层基于Go语言,因此它沿用了Go语言独有的日期时间格式化规则。
不同于常见的YYYY-MM-DD或%Y-%m-%d等占位符,Go语言的格式化是基于一个固定的参考日期来定义的。这个参考日期是:
2006年01月02日 15时04分05秒 -0700 MST
你需要通过将你希望显示的年、月、日、时、分、秒等信息,替换为这个参考日期中对应的数字来构建你的格式字符串。听起来可能有点抽象,但掌握了其规律后,你会发现它非常灵活。
UpdatedTime:文档更新时间的获取
UpdatedTime字段在安企CMS中用于记录文档的最后一次修改时间。它通常可以在以下两种常见的模板场景中获取:
- 文档详情页:当你查看某一篇文档的具体内容时,可以通过
archive.UpdatedTime(或你自定义的文档详情变量名,例如articleInfo.UpdatedTime)来获取。 - 文档列表页:在展示多篇文档的列表中,例如文章列表、产品列表等,通常会在
for循环中使用item.UpdatedTime来获取每篇文档的更新时间。
接下来,我们将结合stampToDate函数,在这两种场景下进行实战演练。
实战演练:格式化 UpdatedTime 的具体步骤
场景一:在文档详情页显示完整更新时间
假设你的文档详情模板中,已经通过archiveDetail标签获取了当前文档的信息,并将其赋值给了archiveInfo变量。你希望在页面上显示“最后更新时间:2023-10-27 10:30:45”。
{# 假设通过 archiveDetail 标签已获取文档详情,并赋值给 archiveInfo #}
{% archiveDetail archiveInfo with name="Title" %} {# 只是为了获取 archiveInfo 对象,实际场景可能已在其他地方获取 #}
{% endarchiveDetail %}
<div>
<h1>{{ archiveInfo.Title }}</h1>
<p>发布时间:{{ stampToDate(archiveInfo.CreatedTime, "2006-01-02 15:04:05") }}</p>
<p>最后更新时间:{{ stampToDate(archiveInfo.UpdatedTime, "2006-01-02 15:04:05") }}</p>
{# 如果只需要显示到分钟,可以这样: #}
<p>最后更新(精确到分钟):{{ stampToDate(archiveInfo.UpdatedTime, "2006-01-02 15:04") }}</p>
</div>
代码解析:
- 我们直接将
archiveInfo.UpdatedTime作为stampToDate函数的第一个参数传入。 - 第二个参数
"2006-01-02 15:04:05"就是我们用Go语言参考日期构建的格式字符串。2006代表年,01代表月,02代表日,15代表24小时制的小时,04代表分钟,05代表秒。中间的连接符(如-或:)和空格都是字面值,会原样输出。
场景二:在文档列表页显示每篇文档的完整更新时间
当你使用archiveList标签循环展示多篇文档时,你需要将stampToDate函数应用到循环中的每个item对象。
{# 假设通过 archiveList 标签获取文章列表 #}
<div class="article-list">
{% archiveList archives with type="list" limit="5" %}
{% for item in archives %}
<div class="article-item">
<h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
<p class="article-meta">
发布时间:<span>{{ stampToDate(item.CreatedTime, "2006-01-02 15:04:05") }}</span>
更新时间:<span>{{ stampToDate(item.UpdatedTime, "2006-01-02 15:04:05") }}</span>
</p>
<p class="article-desc">{{ item.Description }}</p>
<a href="{{ item.Link }}" class="read-more">阅读详情</a>
</div>
{% else %}
<p>暂无文章</p>
{% endfor %}
{% endarchiveList %}
</div>
代码解析:
- 在
for循环中,我们通过item.UpdatedTime获取当前循环项的更新时间戳。 - 同样,
"2006-01-02 15:04:05"作为格式字符串,确保每篇文章的更新时间都以完整的日期时间格式显示。
掌握 Go 语言日期格式化魔法
理解Go语言的日期格式化是关键。记住,你提供的格式字符串不是一个模式,而是一个范例。你需要提供的是`2006年01月