在网站运营中,让您的内容保持实时更新,特别是像年份或日期这样的系统时间信息,不仅能提升网站的专业度,也能为用户提供更准确的参考。AnQiCMS 作为一款灵活高效的内容管理系统,提供了多种便捷的方式,让您能在模板中轻松实现这一需求。

接下来,我们就一起了解如何在 AnQiCMS 的模板中,灵活地展示当前年份或其他的系统时间信息。

直接显示当前系统时间——{% now %} 标签

在 AnQiCMS 的模板中,如果你需要直接获取并展示网站访问时的当前年份、日期或具体时间,{% now %} 标签是你的好帮手。这个标签的使用非常直观,你只需要在后面跟着一个表示时间格式的字符串即可。这里需要注意的是,AnQiCMS 基于 Go 语言开发,所以时间格式字符串遵循 Go 语言的特殊约定,而不是常见的 Y-m-d 格式。

例如,如果您只想在网站底部显示当前的年份作为版权信息:

{# 只显示当前年份 #}
© {% now "2006" %} 您的网站版权所有。

如果您需要显示完整的年月日,例如在页头或某个特定区域:

{# 显示完整的年月日 #}
今天是:{% now "2006年01月02日" %}

如果内容要求更精确,需要展示详细的日期和时间:

{# 显示详细的日期和时间 #}
当前时间:{% now "2006-01-02 15:04:05" %}

这在网站的页脚版权声明中非常实用,一旦设置,年份就能自动保持最新,省去了每年手动更新的麻烦,让网站内容始终保持新鲜感。

格式化文章或数据中的时间戳——{{ stampToDate() }} 函数

除了显示系统当前时间,我们更常遇到的是需要将数据库中存储的时间信息(通常是时间戳格式)格式化显示出来。比如,一篇文章的发布日期或最近更新时间。

AnQiCMS 提供了一个非常方便的 stampToDate 函数,它能将 10 位的 Unix 时间戳转换为我们需要的日期时间格式。你可以在 archiveListarchiveDetail 等标签获取到的文档数据中找到 CreatedTime (创建时间) 或 UpdatedTime (更新时间),它们都是时间戳。

以下是一些使用 stampToDate 函数的例子:

要显示文章的发布日期,只保留年、月、日:

{# 显示文章的发布日期 #}
发布于:{{ stampToDate(archive.CreatedTime, "2006年01月02日") }}

如果您需要显示精确到分钟的更新时间:

{# 显示精确的更新时间 #}
上次更新:{{ stampToDate(archive.UpdatedTime, "2006-01-02 15:04") }}

如果您的设计中需要更简洁的格式,例如只显示月份和日期:

{# 只显示月份和日期 #}
{{ stampToDate(item.CreatedTime, "01-02") }}

这对于博客文章、新闻动态、产品发布日期等需要展示特定时间点的场景来说,是不可或缺的功能,它确保了用户在浏览内容时能够一目了然地获取时间信息。

Go 语言时间格式化字符串小贴士

了解 Go 语言的时间格式化规则是掌握 AnQiCMS 时间展示的关键。它不像其他一些系统使用 Y-m-d H:i:s 这样的占位符,而是使用一个特殊的参考时间:2006年01月02日 15时04分05秒(也可以理解为 1月2日周一 下午03:04:05 MST 2006)。

你可以把这个参考时间中的每个数字或字母看作是其对应时间部分的占位符。例如:

  • 2006 代表四位数的年份(例如:2023)
  • 01 代表两位数的月份(例如:09)
  • 代表月份的汉字表示
  • 02 代表两位数的日期(例如:15)
  • 代表日期的汉字表示
  • 15 代表 24 小时制的小时(例如:14)
  • 04 代表两位数的分钟(例如:30)
  • 05 代表两位数的秒钟(例如:59)
  • Mon 代表星期几的英文简写(例如:Wed)
  • Monday 代表星期几的英文全称(例如:Wednesday)
  • PM 代表上午/下午(例如:AM)
  • MST-0700 代表时区

通过灵活组合这些元素,你可以构建出任何你想要的日期时间格式。例如,要显示“2023年09月15日 星期三 上午10:30”,你可以尝试这样的格式组合。

总的来说,AnQiCMS 在模板中处理时间信息既强大又灵活。无论是需要展示网站的实时系统时间,还是将文章的发布更新时间以美观的方式呈现,都能通过简单的标签和函数轻松实现。理解 Go 语言的时间格式化规则,将帮助你更好地驾驭这些功能,让你的网站内容管理更加得心应手。


常见问题(FAQ)

Q1: 为什么我的 {{ stampToDate(...) }} 函数显示的时间是错误的?

A: 首先,请检查您传递给 stampToDate 函数的时间戳是否为 10 位整数,这通常是 Unix 秒级时间戳。如果您的时间戳是 13 位的毫秒级时间戳,您需要先将其除以 1000 转换为秒级时间戳。例如:{{ stampToDate(archive.CreatedTime / 1000, "2006-01-02") }}。其次,确认您的格式化字符串是否严格遵循 Go 语言的参考时间 `2006