在网站内容运营中,文章的发布时间或更新时间是向访客传递信息的重要元素。一个清晰、易读的日期时间格式不仅能提升用户体验,还能让访客快速了解内容的实效性。安企CMS为此提供了一个非常实用的模板标签,帮助我们轻松实现这一目标。

核心工具:stampToDate 标签

安企CMS允许我们通过stampToDate标签,将文章存储的原始时间戳(通常是一个10位数字)格式化成任何我们需要的日期时间样式。它的基本使用方法非常直观:

{{ stampToDate(时间戳变量, "格式化字符串") }}

这里的 时间戳变量 是文章中存储时间戳的字段,例如文章的创建时间 (CreatedTime) 或更新时间 (UpdatedTime)。格式化字符串 则是定义你希望时间如何显示的关键。

掌握Go语言的日期时间格式化规则

在使用stampToDate标签时,格式化字符串的写法与我们日常可能熟悉的YYYY-MM-DD%Y-%m-%d有所不同,它是基于Go语言特有的“参考时间”来定义的。Go语言采用一个固定的时间点:2006年01月02日 15点04分05秒 作为所有日期时间格式化字符串的参考。

这意味着,当你想显示某个日期时间元素时,你需要用这个参考时间对应的数字来构造你的格式字符串。以下是一些常用格式的对照:

  • 年份2006 (参考年份)
  • 月份01 (参考月份,带前导零) 或 1 (不带前导零)
  • 日期02 (参考日期,带前导零) 或 2 (不带前导零)
  • 小时15 (24小时制) 或 03 (12小时制,带前导零) 或 3 (12小时制,不带前导零)
  • 分钟04 (带前导零) 或 4 (不带前导零)
  • 秒数05 (带前导零) 或 5 (不带前导零)
  • 星期Mon (星期几的缩写) 或 Monday (星期几的全称)

例如,如果你想显示“年-月-日 时:分”,对应的格式字符串就是"2006-01-02 15:04"

实践应用:在文章列表与详情页中格式化时间

在安企CMS中,文章的创建时间通常存储在 CreatedTime 字段中,更新时间存储在 UpdatedTime 字段中。无论是文章列表页还是文章详情页,你都可以通过类似 item.CreatedTime (在循环遍历文章列表时) 或 archive.CreatedTime (在文章详情页直接访问时) 的方式获取到时间戳,然后结合stampToDate标签进行格式化。

下面是一些在模板中格式化文章时间的示例:

示例一:在文章列表页(archiveList 循环中)

假设你正在使用archiveList标签循环显示文章列表,并且希望每篇文章都显示发布日期和更新日期。

{% archiveList articles with type="page" limit="10" %}
    {% for item in articles %}
    <article>
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>发布于:{{ stampToDate(item.CreatedTime, "2006年01月02日") }}</p>
        <p>更新于:{{ stampToDate(item.UpdatedTime, "2006-01-02 15:04") }}</p>
        <p>{{ item.Description }}</p>
    </article>
    {% endfor %}
{% endarchiveList %}

示例二:在文章详情页

在文章详情页,我们通常会展示更详细的日期时间信息,甚至包括星期几。

<article>
    <h1>{{ archive.Title }}</h1>
    <div class="article-meta">
        <span>发布日期:{{ stampToDate(archive.CreatedTime, "2006年01月02日 星期一") }}</span>
        <span>最后更新:{{ stampToDate(archive.UpdatedTime, "2006/01/02 15:04:05") }}</span>
    </div>
    <div class="article-content">
        {{ archive.Content|safe }}
    </div>
</article>

通过这些简单的代码片段,你就可以让文章的时间显示更加人性化。

值得一提的是,如果您仅需在文章详情页直接展示 CreatedTimeUpdatedTimearchiveDetail 标签本身也支持 format 参数进行格式化,例如:{% archiveDetail with name="CreatedTime" format="2006-01-02" %}。但这仅限于直接调用这两个字段时,对于模板中的其他时间戳变量,stampToDate 标签仍是通用且强大的选择。

自定义与灵活性

stampToDate标签的强大之处在于它的灵活性。你可以根据网站的设计风格和用户群体的阅读习惯,自由组合Go语言的参考时间元素,创建出独一无二的日期时间格式。无论是简洁的“月/日”,还是详细的“年-月-日 星期几 时:分:秒”,都可以通过调整格式字符串来实现。

通过熟练运用stampToDate标签和Go语言的日期时间格式化规则,你可以让网站上的时间信息更加清晰、专业,从而提升整体的用户体验。


常见问题 (FAQ)

问:为什么格式字符串是"2006-01-02"而不是"YYYY-MM-DD"

答:安