在网站运营过程中,内容的发布时间是向访问者传达信息的重要组成部分。一个清晰、易读的日期格式不仅能提升用户体验,还能让网站看起来更专业、更具时效性。在AnQiCMS中,内容发布时间通常以一串数字(即时间戳)的形式存储。如何将这些数字转换为我们日常熟悉的“年-月-日”或“月/日 时:分”等友好格式呢?AnQiCMS为我们提供了一个非常便捷的模板标签:stampToDate

理解AnQiCMS中的时间戳

在AnQiCMS的模板开发中,我们经常会遇到像item.CreatedTime(内容创建时间)或archive.UpdatedTime(内容更新时间)这样的变量。它们的值通常是一个10位数的Unix时间戳,例如1609470335。这种原始的时间戳对于机器处理非常方便,但对于人类阅读来说却很不直观。为了提升网站内容的阅读体验,我们需要一个方法来将这些时间戳“翻译”成更易于理解的日期时间格式。

引入stampToDate标签

这个时候,stampToDate标签就派上用场了。它的基本用法非常直观,遵循AnQiCMS模板引擎的通用语法:

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

这个标签接收两个主要参数:

  1. 时间戳: 需要被格式化的10位Unix时间戳。这通常是你从archiveitem等对象中获取到的CreatedTimeUpdatedTime字段。
  2. 格式: 一个字符串,用来定义你想要的日期时间显示格式。

掌握Go语言的时间格式化规则

这里的“格式”参数是理解和掌握stampToDate标签的关键。AnQiCMS的模板引擎底层采用了Go语言,所以时间格式的定义也沿用了Go语言独特的方式。与我们常见的YYYY-MM-DD等符号占位符格式不同,Go语言使用一个特定的参考时间来定义日期时间的各个部分。这个参考时间是:

2006年01月02日 15时04分05秒 (时区通常为MST或UTC-0700)

其原理是:你希望日期时间的哪个部分以什么形式显示,就用这个参考时间中对应部分的数字或字符来表示。例如:

  • 年: 使用 2006 来表示四位年份。
  • 月: 使用 01 来表示两位月份(不足两位补零),使用 1 来表示不补零的月份。
  • 日: 使用