在安企CMS模板中灵活展示当前日期和自定义时间格式
在网站运营中,我们经常需要在页面上动态显示日期和时间信息,无论是版权声明中的当前年份,还是文章发布时间、活动倒计时等。安企CMS提供了非常灵活且易于使用的方法来实现在模板中显示当前年份或自定义格式的日期时间,让您的网站内容保持最新,提升用户体验。
安企CMS的模板系统采用了类似Django模板引擎的语法,这使得动态内容的展示变得直观。其中,处理日期时间的核心是两个强大的标签:stampToDate 和 now。
动态获取当前年份与时间:now 标签的妙用
当您需要直接在模板中显示当前的年份,例如在网站页脚的版权声明中,now 标签是您的理想选择。它能够直接获取系统当前的日期和时间,并按照您指定的格式输出。
比如,要在网站页脚显示当前的年份,我们可以这样使用:
{% now "2006" %}
这里 2006 并不是一个普通的数字,而是Go语言中日期格式化的一种约定。在Go语言中,日期格式化是基于一个特定的参考时间点:“2006年1月2日15时04分05秒 -0700 MST”。您只需记住这个参考时间点中各部分对应的数字,即可灵活组合出您想要的任何格式。例如:
2006代表年份01代表月份02代表日期15代表小时(24小时制)04代表分钟05代表秒
所以,如果您想显示完整格式的当前日期,比如“2023-01-02”,可以写成:
{% now "2006-01-02" %}
如果还需要精确到时分秒,比如“2023-01-02 15:04:05”,则可以这样:
{% now "2006-01-02 15:04:05" %}
now 标签的强大之处在于,它能让您的网站始终显示最新的年份或时间,无需手动更新模板文件,大大减轻了维护负担。
格式化现有时间戳:stampToDate 标签的应用
除了获取当前时间,网站上更多时候是需要展示数据库中存储的时间,比如文章的发布时间(CreatedTime)或更新时间(UpdatedTime)。这些时间通常以Unix时间戳的形式存储。安企CMS提供了 stampToDate 标签来将这些时间戳转换为可读的日期时间格式。
stampToDate 标签的使用方法是:{{ stampToDate(时间戳, "格式") }}。
举个例子,在文章详情页中,我们常常需要显示文章的发布日期。假设文章对象的发布时间字段是 CreatedTime,您可以这样格式化它:
{{ stampToDate(archive.CreatedTime, "2006年01月02日") }}
或者,如果您希望显示更简洁的“年-月-日 时:分”格式:
{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04") }}
这里同样是沿用了Go语言的日期格式化规则。通过调整格式字符串,您可以轻松实现各种日期显示需求,例如:
- 只显示月份和日期:
{{ stampToDate(archive.CreatedTime, "01-02") }} - 显示英文月份简写:
{{ stampToDate(archive.CreatedTime, "Jan 02, 2006") }} - 显示星期几:
{{ stampToDate(archive.CreatedTime, "Mon, 02 Jan 2006") }}
将 stampToDate 标签与 archiveDetail 或 archiveList 标签结合使用,可以轻松地在文章列表或详情页中,以统一且美观的格式展示每篇文章的创建或更新时间,极大地提升了内容的可读性和网站的专业性。
实际应用场景示例
网站页脚版权声明:
© {% now "2006" %} {{ system.SiteName }} 版权所有。文章详情页显示发布时间:
<p>发布于:<span>{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span></p>文章列表显示简短日期:
<small>更新日期:{{ stampToDate(item.UpdatedTime, "2006/01/02") }}</small>
掌握 now 和 stampToDate 这两个标签,以及Go语言的日期格式化规则,您就能在安企CMS中随心所欲地控制网站上日期时间的显示方式。这不仅能让您的网站内容更加动态和吸引人,也为网站的维护和更新带来了极大的便利。
常见问题解答 (FAQ)
Q1: 为什么我设置了日期格式,但显示出来却是“2006-01-02 15:04:05”或者其他不正确的日期?
A1: 这通常是因为您在格式化字符串时没有完全按照Go语言的日期格式化参考点来设置。Go语言的日期格式化比较特殊,它不是使用Y-m-d这类占位符,而是使用一个固定的参考时间点“2006年01月02日15时04分05秒”中的对应数字来代表年、月、日、时、分、秒。请仔细核对您格式字符串中的每个数字或字母是否与参考时间点中的对应部分一致。例如,年份必须是2006而不是YYYY,月份是01而不是MM。
Q2: stampToDate 和 now 这两个标签有什么区别,我应该在什么时候使用它们?
A2: now 标签用于获取和显示当前系统时间。比如网站页脚的版权年份({% now "2006" %}),它会动态显示您网站访问时的当前年份。而 stampToDate 标签则用于格式化已经存在的时间戳,这些时间戳通常来源于数据库中的内容字段,比如文章的发布时间(archive.CreatedTime)。简单来说,需要显示“现在”的时间就用 now,需要显示“过去某个时间点”的时间就用 stampToDate。
Q3: 我想显示自定义的中文日期格式,比如“二〇二三年一月二日”,可以实现吗?
A3: 安企CMS的日期格式化功能主要基于Go语言的参考时间格式,它不直接支持将数字转换为中文大写数字。但是,您可以实现像“2023年01月02日”这样的中文日期格式,方法是直接将中文文字包含在格式字符串中,例如{{ stampToDate(archive.CreatedTime, "2006年01月02日") }}。对于更复杂的中文大写数字需求,可能需要在前端使用JavaScript进行二次处理,或者通过自定义开发Go语言后端函数来满足。