在网站运营中,常常需要让网页内容保持实时更新,或者精确展示特定事件的时间,无论是页脚的版权年份、文章的发布日期,还是产品的更新时间,这些动态的时间信息都能让网站显得更加专业和活跃。AnQiCMS 提供了非常灵活且直观的方式,让您轻松地在模板中显示当前年份或指定格式的时间。

接下来,我们将一起探索两种主要的方法,让您的 AnQiCMS 网站能够灵活展示各种时间信息。

一、显示当前年份或指定格式的实时时间:使用 {% now %} 标签

当您需要在网站的任何位置显示当前的年份,比如在网站页脚的版权声明中,或者在某个动态模块中显示当前的完整日期和时间时,AnQiCMS 提供了一个简洁的 {% now %} 标签。

这个标签专门用于获取并格式化当前的系统时间。

要显示当前的年份,您只需在模板文件中加入这一行代码:

{% now "2006" %}

这样,您的网站页脚就能自动更新为当前的年份,无需每年手动修改。

如果您需要显示更具体、更实时的日期或时间,比如:

  • 显示完整的当前日期(年-月-日):

    {% now "2006-01-02" %}
    

    效果:2023-10-27

  • 显示包含时分秒的当前时间:

    {% now "2006-01-02 15:04:05" %}
    

    效果:2023-10-27 10:30:15

通过调整 {% now %} 标签后的格式字符串,您可以让当前时间以任何您想要的样式呈现。

二、格式化已有时间戳:使用 {{ stampToDate() }} 标签

在 AnQiCMS 中,文章(archive)、评论(comment)或用户(user)等内容通常会存储发布时间或更新时间等信息,这些信息在数据库中一般以时间戳(timestamp)的形式存在。当您想在前端页面展示这些数据时,就需要将这些时间戳转换为易于阅读的日期或时间格式。

这时,{{ stampToDate() }} 这个内置函数就派上用场了。它能够接收一个时间戳和一个格式字符串,然后输出格式化后的时间。

例如,在文章详情页或文章列表页中,您想显示文章的发布日期:

{% archiveList archives with type="list" limit="10" %}
    {% for item in archives %}
        <div>
            文章标题:{{ item.Title }}<br>
            发布日期:{{ stampToDate(item.CreatedTime, "2006年01月02日") }}
        </div>
    {% endfor %}
{% endarchiveList %}

在这里,item.CreatedTime 就是文章的时间戳,"2006年01月02日" 则是我们希望的输出格式。如果文章的 CreatedTime 对应的时间是 2023-10-27 10:30:15,那么 stampToDate 函数会将其显示为 2023年10月27日

同样地,如果需要显示文章的更新时间,可以使用 item.UpdatedTime

更新时间:{{ stampToDate(item.UpdatedTime, "2006-01-02 15:04") }}

深入理解时间格式化:Golang 风格的“魔术数字”

您可能已经注意到,无论是 {% now %} 还是 {{ stampToDate() }},它们的时间格式字符串都使用了 2006-01-02 15:04:05 这样的数字组合,而不是常见的 YYYY-MM-DD 等。这其实是 AnQiCMS 基于 Go 语言开发的特性。Go 语言在进行时间格式化时,使用一个固定的参考时间点来定义格式,这个参考时间就是:

2006年1月2日 15点04分05秒 -0700 MST

您可以把这个日期和时间理解为一套“模板”,通过选择性地使用或组合其中的各个数字和字符,来构建您想要的日期时间格式。

以下是一些常用的对应关系和示例,帮助您快速掌握:

  • 年份: 2006 (四位数年份) 或 06 (两位数年份)
  • 月份: 01 (两位数月份), 1 (无前导零月份), Jan (月份缩写), January (月份全称)
  • 日期: 02 (两位数日期), 2 (无前导零日期)
  • 小时: 15 (24小时制), 03 (12小时制,带前导零), 3 (12小时制,无前导零)
  • 分钟: 04 (两位数分钟), 4 (无前导零分钟)
  • 秒数: 05 (两位数秒数), 5 (无前导零秒数)
  • 上下午标记: PMpm
  • 星期: Mon (星期缩写), Monday (星期全称)

更多格式化示例:

目标格式 格式字符串 示例输出(假设时间是 2023年10月27日 10点30分15秒
年月日(短横线) "2006-01-02" 2023-10-27
年月日(斜杠) "2006/01/02" 2023/10/27
月日年 "01/02/2006" 10/27/2023
日月年 "02/01/2006" 27/10/2023
中文年月日 "2006年01月02日" 2023年10月27日
时分秒(24小时制) "15:04:05" 10:30:15
时分(12小时制,带上午/下午) "03:04 PM" 10:30 AM
星期几 "Monday" Friday
完整的日期时间(含星期) "Monday, 02 Jan 2006 15:04" Friday, 27 Oct 2023 10:30

通过熟练运用这些“魔术数字”,您将能轻松应对各种日期时间显示需求。

总结

在 AnQiCMS 中,显示当前年份或指定格式的时间,主要依赖于 {% now %}{{ stampToDate() }} 这两个强大的标签。{% now %} 适用于获取实时的当前时间,而 {{ stampToDate() }} 则用于格式化内容中已有的时间戳。掌握 Go 语言风格的时间格式化规则,是灵活运用这些标签的关键。通过简单的代码,您可以让您的网站时间信息始终保持准确和美观。


常见问题 (FAQ)

  1. {% now %}{{ stampToDate() }} 有什么区别?
    • {% now %} 用于获取并显示当前服务器的实时日期和时间。它不依赖于任何现有数据,每次页面加载都会显示最新的时间。
    • {{ stampToDate() }} 用于格式化已存储在数据库中的时间戳。例如,文章的发布时间 archive.CreatedTime 或更新时间 archive.UpdatedTime 都是时间戳,需要通过 stampToDate() 进行格式化才能以人类可读的