如何在AnQiCMS模板中对时间戳进行格式化输出为日期或时间字符串?

📅 👁️ 78

在网站运营中,内容发布时间、更新时间等日期和时间信息对用户体验和内容管理都至关重要。AnQiCMS 作为一款功能丰富的内容管理系统,提供了灵活的模板标签,让用户能够轻松地将后台存储的时间戳数据,格式化成各种易读的日期或时间字符串,以适应不同的展示需求。

理解 AnQiCMS 中的时间戳

在 AnQiCMS 内部,大部分日期和时间字段,如文章的 CreatedTime(创建时间)或 UpdatedTime(更新时间),都以 Unix 时间戳的形式存储。这是一个 10 位的整数,代表从 1970 年 1 月 1 日 00:00:00 UTC 到现在的秒数。虽然这种格式便于系统存储和处理,但直接展示给用户则显得不够直观。因此,我们需要将其转换为人类可读的日期或时间格式。

核心功能:stampToDate 标签

AnQiCMS 提供了一个专门的模板标签 stampToDate 来解决时间戳格式化的问题。这个标签的使用方式非常简洁直观,它接受两个参数:

  1. 时间戳变量:需要被格式化的时间戳,通常是您从内容模型中获取的字段,例如 item.CreatedTime
  2. 格式字符串:一个用于定义输出格式的字符串。

基本的语法结构是:{{stampToDate(时间戳变量, "格式字符串")}}

格式字符串的奥秘:Go 语言的参考时间

这里需要特别注意“格式字符串”的写法。AnQiCMS 底层基于 Go 语言开发,因此在日期时间格式化上遵循 Go 语言的惯例。这意味着您不会使用像 Y-m-d H:i:s 这样的占位符,而是使用一个特殊的“参考时间”来定义您想要的输出样式。这个参考时间就是:2006-01-02 15:04:05

您可以把这个参考时间想象成一个模板,您希望日期时间怎么显示,就用这个参考时间对应着写出来。例如:

  • 如果希望显示年份(2006),就将格式字符串中的 2006 保留。
  • 如果希望显示月份(01),就将格式字符串中的 01 保留。
  • 以此类推,02 代表日,15 代表小时(24小时制),04 代表分钟,05 代表秒。

下面是一些常见的格式化示例:

  • 只显示日期(年-月-日):如果您希望日期以 2023-01-01 的形式显示,那么格式字符串就写成 "2006-01-02"
  • 显示完整日期和时间:如果需要 2023-01-01 12:30:00 这样的输出,格式字符串就是 "2006-01-02 15:04:05"
  • 自定义分隔符:想要 2023年01月01日 这样的中文格式,可以写成 "2006年01月02日"。如果希望是 01/01/2023,则写成 "01/02/2006"
  • 只显示时间:例如 12:30:00,格式字符串为 "15:04:05"
  • 显示简短年月:如果只需要 01-02(月-日),可以写成 "01-02"

在模板中的实际应用

在 AnQiCMS 的模板中,您可以通过 archiveListarchiveDetailcommentList 等标签获取到包含时间戳的数据项。然后,将这些数据项的时间戳字段传递给 stampToDate 标签进行格式化。

例如,在一篇文章列表页,我们希望显示每篇文章的发布日期:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <li>
        <a href="{{item.Link}}">
            <h5>{{item.Title}}</h5>
            <div>
                <span>发布时间:{{stampToDate(item.CreatedTime, "2006年01月02日")}}</span>
                <span>阅读量:{{item.Views}}</span>
            </div>
        </a>
    </li>
    {% endfor %}
{% endarchiveList %}

在文章详情页,我们可能需要显示更详细的更新时间:

{% archiveDetail archiveDetailData %}
    <h1>{{archiveDetailData.Title}}</h1>
    <p>
        <span>发布于:{{stampToDate(archiveDetailData.CreatedTime, "2006-01-02 15:04")}}</span>
        {% if archiveDetailData.CreatedTime != archiveDetailData.UpdatedTime %}
        <span>更新于:{{stampToDate(archiveDetailData.UpdatedTime, "2006-01-02 15:04:05")}}</span>
        {% endif %}
    </p>
    <div>
        {{archiveDetailData.Content|safe}}
    </div>
{% endarchiveDetail %}

小贴士:time.Time 类型与 date 过滤器

AnQiCMS 的模板中确实存在一个 date 过滤器,但它要求传入的变量必须是 Go 语言的 time.Time 对象,而不是原始的 Unix 时间戳。如果我们直接将时间戳传递给 date 过滤器,系统通常会报错或不按预期工作。因此,处理从数据库或内容模型中获取的原始 Unix 时间戳时,请务必使用 stampToDate 标签,它是为此类场景专门设计的。

如果您只是想获取并格式化当前的服务器时间,而不需要处理特定内容的时间戳,可以方便地使用 {% now "格式字符串" %} 标签,例如 {% now "2006-01-02 15:04" %} 会直接输出当前日期和时间。

通过 stampToDate 标签,AnQiCMS 让时间戳的格式化输出变得既简单又强大,满足了网站内容展示的各种精细化需求。


常见问题 (FAQ)

相关文章

AnQiCMS的`pagination`标签如何灵活控制分页页码的显示数量和样式?

在管理内容丰富的网站时,高效的页面导航系统是提升用户体验和搜索引擎优化(SEO)的关键。安企CMS深知这一点,其内置的`pagination`标签为我们提供了细致入微的控制,让网站的页码显示既灵活又美观。这篇文章将带你深入了解如何运用`pagination`标签,灵活掌控分页页码的显示数量和样式。 ### 了解 `pagination` 标签的核心作用 在安企CMS中

2025-11-08

`breadcrumb`标签在AnQiCMS模板中如何自动生成页面的面包屑导航?

我们在浏览网站时,常常会注意到页面顶部或底部有一串路径信息,它清晰地指明了我们当前所处的位置,比如“首页 > 分类 > 文章标题”。这就是我们常说的面包屑导航(Breadcrumb Navigation)。它不仅能帮助用户更好地理解网站结构,提升浏览体验,对于搜索引擎优化(SEO)而言,也具有不可忽视的价值。 ### 面包屑导航为何重要? 对于用户来说,面包屑导航就像一张迷你地图

2025-11-08

如何在AnQiCMS中利用`archiveFilters`标签实现文档参数的组合筛选?

## 驾驭AnQiCMS:巧用`archiveFilters`标签实现文档参数组合筛选的艺术 在内容运营中,为用户提供精准、高效的内容检索体验至关重要。设想一下,如果您的网站内容丰富多样,用户却难以快速找到他们所需的信息,这无疑会极大地影响用户体验和网站的转化率。安企CMS深谙此道,为此提供了强大的`archiveFilters`标签,让我们可以轻松实现文档参数的组合筛选功能

2025-11-08

如何在AnQiCMS中开启和使用留言表单的验证码功能?

网站留言板是一个与访客互动的好地方,它拉近了网站与用户的距离。然而,如果没有适当的保护,留言板很快就会被各种垃圾信息、恶意提交甚至自动化脚本所淹没,这不仅影响了网站的整洁度,也可能占用服务器资源,甚至对网站的信誉造成损害。幸运的是,AnQiCMS 提供了一个简单而有效的解决方案:验证码功能。 在 AnQiCMS 中为留言表单开启和使用验证码功能,可以显著提高网站的安全性

2025-11-08

`urlize`和`urlizetrunc`过滤器在AnQiCMS模板中如何处理文本中的URL链接?

在网站运营中,我们经常需要在内容中嵌入各种链接,无论是指向站内资源还是外部引用。手动将这些纯文本链接转换为可点击的超链接不仅效率低下,还容易出错。更重要的是,对于搜索引擎优化(SEO)和用户体验而言,规范的链接处理至关重要。AnQiCMS 模板引擎提供了 `urlize` 和 `urlizetrunc` 这两个过滤器,它们能够智能地识别文本中的 URL 和电子邮件地址,并自动将其转换为标准且对

2025-11-08

`length`过滤器在AnQiCMS模板中如何获取字符串、数组或键值对的长度?

在 AnQiCMS 的模板开发中,我们常常需要对页面上展示的数据进行各种处理和判断。其中,获取字符串、数组或键值对的长度是一个非常基础且实用的操作。AnQiCMS 模板引擎提供了 `length` 过滤器,让这项任务变得简单直观。 ### 认识 `length` 过滤器:获取数据长度的利器 `length` 过滤器顾名思义,就是用来获取数据“长度”的工具。无论是想知道一段文字有多少个字符

2025-11-08

AnQiCMS的后台“链接推送”功能支持哪些搜索引擎的主动推送?

在互联网内容日益增长的今天,网站内容的快速收录是提升网站流量和影响力的重要一环。对于许多内容运营者和企业而言,如何让搜索引擎及时发现并收录自己网站上的新内容,是SEO工作中的核心课题。AnQiCMS(安企CMS)深谙这一需求,特别在后台集成了便捷且功能强大的“链接推送”功能,旨在帮助用户将其精心创作的内容第一时间送达各大搜索引擎,有效缩短内容从发布到被收录的周期。 ###

2025-11-08

AnQiCMS的`filter`标签如何将多个过滤器组合起来对内容进行链式处理?

AnQiCMS 提供了灵活强大的内容管理能力,其中模板引擎更是我们日常运营和内容展示的核心。在处理网站内容时,我们经常会遇到需要对数据进行多步转换才能达到最终显示效果的情况。例如,一段很长的文章简介,我们可能需要先截取一部分,然后确保其所有字母都小写,最后再计算其处理后的长度。如果每次都通过复杂的代码逻辑来手动处理,不仅效率低下,也让模板变得难以维护。 这时,AnQiCMS 模板引擎中的

2025-11-08