在安企CMS中将时间戳格式化为可读日期:一份实用的指南

在管理网站内容时,我们经常会遇到需要显示文章发布时间、更新时间、用户注册时间等信息。这些数据在数据库中通常以一串数字——也就是“时间戳”的形式存储。虽然计算机能轻松理解这些数字,但对于访问网站的用户来说,它们可就显得不那么友好了。比如,看到“1678886400”这样的数字,远不如“2023年3月15日 10:00:00”来得直观清晰。

幸运的是,安企CMS提供了一个非常便捷且强大的模板标签,帮助我们轻松地将这些时间戳转换为各种可读的日期时间格式。

认识核心工具:stampToDate 标签

安企CMS的模板引擎采用了类似Django的语法风格,其中一个非常实用的内置标签就是 stampToDate。它专门用于处理时间戳的格式化显示。

这个标签的基本用法非常直观: {{stampToDate(时间戳, "格式")}}

让我们来详细了解这两个参数:

  1. 时间戳(第一个参数) 这是您要转换的原始时间戳。在安企CMS的模板中,我们经常会从数据对象(比如文档列表中的 item 或文档详情中的 archive)的特定字段中获取时间戳,例如 item.CreatedTime(创建时间)或 archive.UpdatedTime(更新时间)。这些字段通常存储的是10位的Unix时间戳(秒级)。

  2. 格式(第二个参数) 这是您希望日期时间字符串呈现的具体格式。这里有一个非常重要的点需要注意:安企CMS的模板引擎遵循Go语言的时间格式化规则,而不是像许多其他系统那样使用 Y-m-dYYYY-MM-DD 这样的占位符。

    Go语言采用一个固定的“参考时间”来定义格式。您只需要用您想要的显示格式来书写这个参考时间,系统就会自动帮您转换。这个神奇的参考时间就是: 2006年01月02日 15时04分05秒 (有时也会写作 2006-01-02 15:04:05

    也就是说,如果你想显示年份,就写 2006;想显示月份,就写 01;想显示日,就写 02,以此类推。

为了更好地理解,我们来看一些常见的格式化示例:

想要显示的格式 Go语言格式字符串 示例输出 (假设时间戳为 1678886400,代表 2023-03-15 10:00:00 UTC+08:00)
年-月-日 2006-01-02 2023-03-15
年月日(中文) 2006年01月02日 2023年03月15日
时:分:秒 15:04:05 10:00:00
年-月-日 时:分 2006-01-02 15:04 2023-03-15 10:00
年/月/日 时:分:秒 2006/01/02 15:04:05 2023/03/15 10:00:00
月/日/年 (美式) 01/02/2006 03/15/2023
星期,日-月-年 时:分 Monday, 02-Jan-06 15:04 Wednesday, 15-Mar-23 10:00

实际应用示例

现在,我们把 stampToDate 标签应用到具体的模板代码中。

  1. 在文档列表中显示发布日期 假设您正在循环一个文档列表 (archives),并希望显示每篇文章的创建时间。

    {% archiveList archives with type="list" limit="10" %}
        {% for item in archives %}
        <li>
            <a href="{{item.Link}}">{{item.Title}}</a>
            {# 显示格式为“2023-03-15” #}
            <span>发布于:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            {# 显示格式为“2023年03月15日 10:00” #}
            <span>更新于:{{stampToDate(item.UpdatedTime, "2006年01月02日 15:04")}}</span>
            <span>阅读量:{{item.Views}}</span>
        </li>
        {% endfor %}
    {% endarchiveList %}
    
  2. 在文档详情页显示详细时间 在单篇文档的详情页中,您可以直接使用 archive.CreatedTimearchive.UpdatedTime

    <article>
        <h1>{{archive.Title}}</h1>
        <div>
            <span>发布日期:{{stampToDate(archive.CreatedTime, "2006年01月02日 15时04分05秒")}}</span>
            <span>最后更新:{{stampToDate(archive.UpdatedTime, "2006/01/02 15:04")}}</span>
            <span>浏览次数:{{archive.Views}}</span>
        </div>
        <div class="content">
            {{archive.Content|safe}}
        </div>
    </article>
    

通过这些示例,您可以看到 stampToDate 标签的灵活性和易用性。只需要调整格式字符串,就可以让时间戳以您想要的方式呈现。

关于 date 过滤器的说明

在使用安企CMS模板时,您可能还会注意到