让时间说话:安企CMS中如何将时间戳格式化为可读日期

在运营网站时,内容的时效性往往是用户非常关注的一点。无论是文章的发布时间、产品信息的更新时间,还是用户评论的具体时刻,清晰直观的日期和时间都能大大提升用户体验,甚至对搜索引擎优化(SEO)也有积极影响。然而,在内容管理系统的后台,我们有时会看到时间以一串长长的数字形式呈现,比如 1609470335。这就是所谓的时间戳,它是机器语言,对于我们普通用户来说,理解起来并不直观。

安企CMS作为一个高效、易用的内容管理系统,充分考虑到了用户的实际需求。它为我们提供了一个非常便捷且强大的工具来解决这个问题,那就是 stampToDate 标签。通过这个标签,我们可以轻松地将那些冰冷的时间戳转化为人人都能理解的、具有“人情味”的日期和时间格式。

认识 stampToDate 标签

stampToDate 标签是安企CMS模板引擎中专门用于时间戳格式化的内置函数。它的基本用法非常直观:

{{stampToDate(时间戳, "格式")}}

这里的 时间戳 通常是一个10位的Unix时间戳(表示从1970年1月1日00:00:00 UTC到现在的秒数),而 格式 则是您希望日期和时间显示出来的具体样式。

关键在于如何定义这个“格式”。安企CMS的模板引擎底层基于Go语言,因此它沿用了Go语言独特的时间格式化规则。这个规则不是用常见的 YYYY-MM-DD 这样的占位符,而是使用一个特定的参照时间2006-01-02 15:04:05。您需要将您想要的日期和时间格式,映射到这个参照时间上。听起来有点抽象?别担心,我们通过一些例子来理解。

常用格式化模式一览

掌握 stampToDate 的关键就是理解Go语言的这个参照时间。下面的表格将展示一些常见的日期时间显示需求,以及它们对应的格式字符串:

显示需求 格式字符串(Go语言参照时间) 示例输出(假设时间戳为 1609470335 对应的 2021年1月1日 11:05:35)
日期
年-月-日(如 2021-01-01) 2006-01-02 2021-01-01
年月日(如 2021年01月01日) 2006年01月02日 2021年01月01日
月/日/年(如 01/01/2021) 01/02/2006 01/01/2021
时间
时:分:秒(如 11:05:35) 15:04:05 11:05:35
时:分(如 11:05) 15:04 11:05
完整日期时间
年-月-日 时:分:秒 2006-01-02 15:04:05 2021-01-01 11:05:35
年月日 时分秒 2006年01月02日 15时04分05秒 2021年01月01日 11时05分35秒
星期几,月日年 时:分:秒 Mon, 02 Jan 2006 15:04:05 Fri, 01 Jan 2021 11:05:35

通过这个参照表,您可以灵活地组合出几乎任何您想要的日期和时间格式。

在您的安企CMS模板中应用

现在,让我们看看如何在实际的安企CMS模板文件中使用 stampToDate 标签。在安企CMS中,无论是文章详情 (archiveDetail)、文章列表 (archiveList) 还是评论列表 (commentList),很多时间字段(如 CreatedTimeUpdatedTime)都是以10位时间戳的形式提供的。

示例一:在文章详情页显示发布日期

假设您希望在文章详情页 ({模型table}/detail.html 或自定义文章模板) 显示文章的发布日期。文章对象的 CreatedTime 字段存储着发布时间戳。

{# 默认获取当前页面的文档对象 archive #}
<div>
    发布日期:{{stampToDate(archive.CreatedTime, "2006年01月02日")}}
</div>
<div>
    更新时间:{{stampToDate(archive.UpdatedTime, "2006-01-02 15:04")}}
</div>

示例二:在文章列表页显示每篇文章的发布时间

当您在一个文章列表页 ({模型table}/list.html 或自定义列表模板) 中循环显示多篇文章时,可以使用 for 循环中的 item.CreatedTime

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

示例三:在评论或留言中显示时间

用户提交评论或留言时,系统也会记录下时间戳。在评论列表 (comment/list.html) 中,您可以这样格式化时间:

{% commentList comments with archiveId=archive.Id type="list" limit="6" %}
    {% for item in comments %}
    <div>
        <strong>{{item.UserName}}</strong> 于 <span>{{stampToDate(item.CreatedTime, "2006年01月02日 15:04")}}</span> 评论道:
        <p>{{item.Content}}</p>
    </div>
    {% endfor %}
{% endcommentList %}

小贴士

  • 灵活尝试: Go语言的参照时间格式化非常灵活,您可以尝试不同的组合来达到您想要的显示效果。比如只显示年份 2006,或者只显示月份 01
  • 字段名称: 请注意,CreatedTimeUpdatedTime 这些字段本身就存储了时间戳值,可以直接传递给 stampToDate 函数。
  • 后台定时发布: 安企CMS支持内容的定时发布功能。如果您将发布时间设置为未来某个时间,那么在到达指定时间前,前端页面通常不会显示该内容。一旦到达, CreatedTime 就会被正确解析并显示。

通过 stampToDate 标签,您可以轻松地将网站上的时间信息呈现得更加清晰、友好。这不仅能提升用户阅读体验,也让您的网站内容