在网站运营中,清晰、统一的时间展示格式对于提升用户体验和内容专业度至关重要。尤其是文章的发布时间,一个规范的“年-月-日”格式,能让访客一目了然。在AnQiCMS(安企CMS)中,实现这一点其实非常简单灵活。

理解AnQiCMS的时间处理方式

在使用AnQiCMS时,您会发现文章(archive)和产品等内容都带有两个关键的时间字段:CreatedTime(创建时间/发布时间)和 UpdatedTime(更新时间)。在模板中直接调用这些字段,例如 {{archive.CreatedTime}}{{item.CreatedTime}},它们通常会以Unix时间戳的形式呈现,比如一串数字 1678886400。这样的数字对于访客来说并不直观,也缺乏美感。

AnQiCMS深知这一需求,因此提供了专门的模板标签和过滤器来帮助我们轻松地将这些时间戳转换为各种可读的日期格式。

格式化时间的核心:stampToDate 标签与 format 参数

AnQiCMS处理时间格式化的核心在于其强大的 stampToDate 标签,以及在某些特定标签中可以直接使用的 format 参数。

Go语言的时间格式化规则

在深入了解如何使用之前,我们首先需要理解AnQiCMS所采用的Go语言时间格式化规则。与许多其他系统使用 YYYY-MM-DD 这样的占位符不同,Go语言采用一个固定的参考时间来定义各种日期时间的格式,这个参考时间是:

2006年01月02日 15时04分05秒

您只需按照这个参考时间中对应的部分来构建您想要的格式字符串即可。例如,要实现“年-月-日”的格式,我们应该写成 '2006年01月02日'

1. 使用 archiveDetail 标签获取并格式化文章详情页时间

当您在文章详情页(例如 detail.html)中显示单篇文章的发布时间时,可以直接在 archiveDetail 标签中使用 format 参数来指定输出格式。这是最便捷的方式:

<div class="article-meta">
    <span>发布日期:</span>
    {# 直接在 archiveDetail 标签中通过 format 参数指定“年-月-日”格式 #}
    <span>{% archiveDetail with name="CreatedTime" format="2006年01月02日" %}</span>
</div>

通过这种方式,文章的发布时间将直接以“2023年03月15日”这样的格式显示,省去了额外的转换步骤。同样地,UpdatedTime 字段也可以使用相同的 format 参数进行格式化。

2. 在 archiveList 循环中格式化文章列表时间

在文章列表页(例如 list.html 或首页 index.html)中,您通常会通过 archiveList 标签循环展示多篇文章。在这种情况下,item.CreatedTime 返回的是一个原始时间戳,此时就需要用到 stampToDate 标签作为过滤器来处理:

{% archiveList articles with type="page" limit="10" %}
    {% for item in articles %}
    <article class="article-item">
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <div class="article-info">
            <span>分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
            {# 使用 stampToDate 标签格式化循环中的 item.CreatedTime #}
            <span>发布时间:{{stampToDate(item.CreatedTime, "2006年01月02日")}}</span>
            <span>阅读量:{{item.Views}}</span>
        </div>
        <p>{{item.Description}}</p>
        <a href="{{item.Link}}" class="read-more">阅读更多</a>
    </article>
    {% else %}
    <p>暂时没有文章可供显示。</p>
    {% endfor %}
{% endarchiveList %}

在这里,stampToDate 接收两个参数:第一个是原始时间戳(item.CreatedTime),第二个是您想要的格式字符串("2006年01月02日")。

更多常用时间格式示例

除了“年-月-日”格式,您还可以根据需要,组合出各种常见的日期时间格式:

  • 年/月/日"2006/01/02"

    {{stampToDate(item.CreatedTime, "2006/01/02")}}
    

    显示效果:2023/03/15

  • 年-月-日 时:分:秒"2006-01-02 15:04:05"

    {{stampToDate(item.CreatedTime, "2006-01-02 15:04:05")}}
    

    显示效果:2023-03-15 10:30:00

  • 月-日"01-02"

    {{stampToDate(item.CreatedTime, "01-02")}}
    

    显示效果:03-15

通过灵活运用Go语言的参考时间格式化规则,您可以轻松地在AnQiCMS模板中实现任何您想要的日期时间显示效果。这种统一而强大的格式化能力,让您的网站内容展示更加专业和用户友好。

常见问题 (FAQ)

1. 为什么时间格式字符串是“2006年01月02日”,而不是“YYYY-MM-DD”?

这是因为AnQiCMS底层使用的是Go语言,Go语言在格式化时间时,采用的是一种独特的“参考时间”模式。您需要按照 2006年01月02日 15时04分05秒 这个固定的参考时间来编写您的格式字符串。例如,2006 代表年份,`0