在安企CMS的日常内容运营中,我们经常需要将发布时间、更新时间等原始的时间戳数据,以用户更习惯、更易读的方式展现出来。原始的时间戳,例如1609470335这样的纯数字序列,对普通用户来说毫无意义。为了解决这个问题,安企CMS提供了一个非常实用的模板标签——stampToDate,它能够帮助我们将这些数字时间戳转化为格式清晰、用户友好的日期和时间显示。

stampToDate:让时间戳变得可读

stampToDate标签的核心作用,就是将一个10位或13位(如果内部处理为毫秒)的Unix时间戳,按照我们指定的格式进行美化输出。这极大地提升了网站内容的专业度和用户体验。想象一下,如果文章的发布时间只显示一串数字,用户可能会感到困惑。而如果显示为“2023年10月27日 10:30”或“10/27/2023”,则一目了然。

它的使用方式非常直观:{{stampToDate(时间戳, "格式")}}。这里,你需要提供两个参数:

  1. 时间戳: 通常是AnQiCMS中CreatedTimeUpdatedTime这类字段返回的数字。
  2. 格式: 这部分是定义你希望日期时间如何显示的“模板”。

深入理解格式化规则:Go语言的特殊“魔法数字”

安企CMS的stampToDate标签在格式化时,遵循Go语言独特的时间格式化规则。与我们可能熟悉的YYYY-MM-DDHH:MM:SS等占位符不同,Go语言使用一个固定的参考时间——2006年01月02日 15时04分05秒(也称作“魔法数字”或“参考时间”)作为模板。

理解这个参考时间的关键在于,其中每个数字或部分都代表了一个特定的时间组成部分:

  • 2006 代表年份 (Year)
  • 01 代表月份 (Month),带前导零
  • 02 代表日期 (Day),带前导零
  • 15 代表小时 (Hour),24小时制,带前导零
  • 04 代表分钟 (Minute),带前导零
  • 05 代表秒 (Second),带前导零

如果你想要显示其他格式,只需要用这些“魔法数字”的对应部分来构建你的格式字符串即可。例如,如果你想显示“年份-月份-日期”,那么格式字符串就是"2006-01-02"

常用格式化示例

下面是一些常见的格式化方式,以及它们对应的格式字符串和显示效果:

  • 只显示日期(年-月-日): {{stampToDate(item.CreatedTime, "2006-01-02")}} 例如:2023-10-27

  • 显示完整日期和时间: {{stampToDate(item.UpdatedTime, "2006-01-02 15:04:05")}} 例如:2023-10-27 10:30:00

  • 中文日期和时间格式: {{stampToDate(archive.CreatedTime, "2006年01月02日 15时04分")}} 例如:2023年10月27日 10时30分

  • 自定义分隔符的日期: {{stampToDate(item.CreatedTime, "2006/01/02")}} 例如:2023/10/27

  • 只显示小时和分钟: {{stampToDate(item.CreatedTime, "15:04")}} 例如:10:30

  • 显示星期几(英文): {{stampToDate(item.CreatedTime, "Mon Jan 02 2006")}} 例如:Fri Oct 27 2023 (这里的Mon代表星期,Jan代表月份的英文简写,02是日期)

在模板中的实际应用

在安企CMS的模板中,我们通常会在循环文档列表(例如archiveList)或显示文档详情(例如archiveDetail)时用到stampToDate标签。

例如,在一个文章列表页,你可能这样显示每篇文章的发布时间:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <div class="article-card">
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <p class="meta-info">
            发布于:{{ stampToDate(item.CreatedTime, "2006年01月02日 15:04") }}
            浏览量:{{item.Views}}
        </p>
        <p>{{item.Description}}</p>
    </div>
    {% endfor %}
{% endarchiveList %}

而在文章详情页,显示文章的更新时间可以这样:

<article>
    <h1>{% archiveDetail with name="Title" %}</h1>
    <div class="article-meta">
        发布时间:{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04:05") }}
        更新时间:{{ stampToDate(archive.UpdatedTime, "2006-01-02 15:04:05") }}
        浏览量:{% archiveDetail with name="Views" %}
    </div>
    <div class="article-content">
        {% archiveDetail articleContent with name="Content" %}{{articleContent|safe}}
    </div>
</article>

通过合理运用stampToDate标签及其格式化规则,我们可以确保网站上的时间信息始终以清晰、专业且用户友好的方式呈现,从而提升整体的用户体验。


常见问题 (FAQ)

  1. 为什么我不能使用YYYY-MM-DD这样的格式占位符? 安企CMS的stampToDate标签采用Go语言的时间格式化标准,它不识别YMD等传统占位符。相反,你需要使用一个固定的参考时间(2006年01月02日 15时04分05秒)来构建你的格式字符串。例如,如果你想显示四位年份,就使用2006;想显示两位月份,就使用01,以此类推。