在网站运营中,我们经常会遇到这样的情况:数据库里存储的时间信息,比如文章的发布时间、商品的创建时间等,往往以一串数字(时间戳)的形式存在。这串数字对机器来说清晰明了,但对我们用户来说,可读性就差远了。想象一下,一篇文章旁边显示的是“1678886400”,而不是“2023年03月15日”,体验上是不是大打折扣?安企CMS深知这一点,并为此提供了一个非常实用的模板标签——stampToDate,帮助我们轻松将这些原始时间戳格式化成美观易读的日期和时间。
为什么我们需要格式化时间戳?
数据库中存储的时间戳通常是一个整数,代表从1970年1月1日00:00:00 UTC(Unix纪元)开始到现在的秒数或毫秒数。这种统一的存储方式便于数据处理和跨时区计算,但在前端页面展示时,直接显示这些数字会让用户感到困惑,影响阅读体验。将它们转换为“2023年03月15日 10:30”或“昨天 14:00”这样的格式,能极大地提升网站的专业性和用户友好度。
认识stampToDate标签及其使用方式
安企CMS的stampToDate标签设计得非常简洁高效,它主要需要两个关键信息来完成时间戳的格式化:
- 原始时间戳:这是您从数据库中获取到的那串数字。在安企CMS中,这通常是一个10位的整数,代表秒级时间戳。例如,
1609470335。 - 格式字符串:这是定义您想要日期时间如何显示的“模板”。与其他一些系统可能使用
YYYY-MM-DD这样的占位符不同,安企CMS(基于Go语言开发)采用的是Go语言特有的日期时间格式化方式。它以一个固定的参考日期2006-01-02 15:04:05作为格式化的“样本”。
请注意,这个参考日期本身并不会被实际输出。您需要将您想要的日期时间组成部分,对照这个参考日期中的具体数字来编写格式字符串。例如:
- 如果您想显示四位数的年份,就写
2006。 - 如果您想显示两位数的月份,就写
01。 - 如果您想显示两位数的日期,就写
02。 - 如果您想显示24小时制的小时数,就写
15。 - 如果您想显示两位数的分钟数,就写
04。 - 如果您想显示两位数的秒数,就写
05。 - 如果您想显示12小时制的小时数,就写
3,并配合PM或AM。
stampToDate标签的基本语法结构是:
{{ stampToDate(您的时间戳变量或数字, "您的格式字符串") }}
实际操作与示例
让我们通过几个具体的例子,看看stampToDate标签是如何让时间戳“活”起来的。假设我们有一个文章对象item,其发布时间戳字段是CreatedTime(值为1609470335,即2021年1月1日12:25:35)。
只显示“年-月-日”:
如果您希望在文章列表中只显示简洁的日期,例如“2021-01-01”:
<p>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>输出结果将是:
2021-01-01显示详细的“年-月-日 时:分:秒”:
如果需要展示精确到秒的时间信息,可以在格式字符串中加入小时、分钟和秒的参考:
<p>更新时间:{{ stampToDate(item.UpdatedTime, "2006-01-02 15:04:05") }}</p>输出结果将是:
2021-01-01 12:25:35自定义中文或其他分隔符格式:
stampToDate的强大之处在于其灵活性。您可以自由组合文本和参考日期数字来创建任何您想要的格式:<p>文章发布于:{{ stampToDate(item.CreatedTime, "2006年01月02日") }}</p>输出:
2021年01月01日<p>日期:{{ stampToDate(item.CreatedTime, "01/02/2006") }}</p>输出:
01/01/2021甚至可以利用12小时制和AM/PM标记:
<p>具体时间:{{ stampToDate(item.CreatedTime, "3:04 PM") }}</p>输出:
12:25 PM(如果时间是下午,则显示PM,上午则显示AM)在文章详情页的常见用法:
在文章详情页,您通常会有一个当前文章对象,例如
archive。您可以这样调用它的时间字段:<p>发表于:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</p> <p>最后编辑:{{ stampToDate(archive.UpdatedTime, "2006-01-02 星期一") }}</p>Go语言的格式化规则还支持更多高级用法,例如显示星期几、月份