在安企CMS中将时间戳格式化为可读日期:一份实用的指南
在管理网站内容时,我们经常会遇到需要显示文章发布时间、更新时间、用户注册时间等信息。这些数据在数据库中通常以一串数字——也就是“时间戳”的形式存储。虽然计算机能轻松理解这些数字,但对于访问网站的用户来说,它们可就显得不那么友好了。比如,看到“1678886400”这样的数字,远不如“2023年3月15日 10:00:00”来得直观清晰。
幸运的是,安企CMS提供了一个非常便捷且强大的模板标签,帮助我们轻松地将这些时间戳转换为各种可读的日期时间格式。
认识核心工具:stampToDate 标签
安企CMS的模板引擎采用了类似Django的语法风格,其中一个非常实用的内置标签就是 stampToDate。它专门用于处理时间戳的格式化显示。
这个标签的基本用法非常直观:
{{stampToDate(时间戳, "格式")}}
让我们来详细了解这两个参数:
时间戳(第一个参数) 这是您要转换的原始时间戳。在安企CMS的模板中,我们经常会从数据对象(比如文档列表中的
item或文档详情中的archive)的特定字段中获取时间戳,例如item.CreatedTime(创建时间)或archive.UpdatedTime(更新时间)。这些字段通常存储的是10位的Unix时间戳(秒级)。格式(第二个参数) 这是您希望日期时间字符串呈现的具体格式。这里有一个非常重要的点需要注意:安企CMS的模板引擎遵循Go语言的时间格式化规则,而不是像许多其他系统那样使用
Y-m-d或YYYY-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 标签应用到具体的模板代码中。
在文档列表中显示发布日期 假设您正在循环一个文档列表 (
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 %}在文档详情页显示详细时间 在单篇文档的详情页中,您可以直接使用
archive.CreatedTime或archive.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模板时,您可能还会注意到