在网站运营中,常常需要让网页内容保持实时更新,或者精确展示特定事件的时间,无论是页脚的版权年份、文章的发布日期,还是产品的更新时间,这些动态的时间信息都能让网站显得更加专业和活跃。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(无前导零秒数) - 上下午标记:
PM或pm - 星期:
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)
{% now %}和{{ stampToDate() }}有什么区别?{% now %}用于获取并显示当前服务器的实时日期和时间。它不依赖于任何现有数据,每次页面加载都会显示最新的时间。{{ stampToDate() }}用于格式化已存储在数据库中的时间戳。例如,文章的发布时间archive.CreatedTime或更新时间archive.UpdatedTime都是时间戳,需要通过stampToDate()进行格式化才能以人类可读的