在网站内容运营中,清晰地展示文章的发布和更新时间,对于提升用户体验、提供内容时效性信息以及优化搜索引擎索引都至关重要。安企CMS(AnQiCMS)在模板中提供了强大而灵活的时间戳格式化功能,让我们可以根据具体需求,将原始的时间戳数据转换为用户友好的日期和时间显示。
要在AnQiCMS模板中精确格式化显示文章的发布和更新时间,我们需要用到一个核心的模板标签:stampToDate。这个标签能够将系统存储的10位时间戳转换为我们想要的日期时间格式。
理解 stampToDate 标签的核心用法
stampToDate 标签的语法结构非常直观:{{stampToDate(时间戳变量, "格式字符串")}}。其中:
- 时间戳变量:这通常是从文章或列表数据中获取的
CreatedTime(发布时间)或UpdatedTime(更新时间),它们以10位数字的时间戳形式存在。 - 格式字符串:这是最关键的部分,它决定了时间戳将如何显示。与其他CMS系统常见的
Y-m-d H:i:s等占位符不同,AnQiCMS(因为其基于Go语言开发)采用的是Go语言特有的日期时间格式化参考字符串。这个参考字符串是固定的2006-01-02 15:04:05。您无需记住这个字符串的含义,只需要将其作为模板,根据您希望输出的样式来调整它。
例如,如果您想显示 2023年02月09日,那么您的格式字符串应该是"2006年01月02日"。如果您想显示 02/09/2023,格式字符串则是"01/02/2006"。这里的数字 2006、01、02、15、04、05 等,分别代表了Go语言中时间格式的年、月、日、时、分、秒等元素,您可以根据需要自由组合这些元素,来定义最终的显示格式。
获取文章的时间戳数据
在格式化时间戳之前,我们首先需要从文章数据中获取原始的时间戳。这可以通过 archiveDetail 标签(用于文章详情页)或 archiveList 标签(用于文章列表页)来实现。
在文章详情页中获取时间戳: 当您在文章详情模板(如
{模型table}/detail.html)中时,可以直接通过archive对象访问当前文章的CreatedTime和UpdatedTime字段。<p>发布时间:{{stampToDate(archive.CreatedTime, "2006-01-02 15:04")}}</p> <p>更新时间:{{stampToDate(archive.UpdatedTime, "2006年01月02日 下午03时04分")}}</p>在文章列表页中获取时间戳: 在文章列表模板(如
{模型table}/list.html)中,您通常会使用archiveList标签循环遍历多篇文章。在循环内部,每篇文章的数据会赋值给一个变量(例如item),然后您可以从中提取时间戳。{% archiveList archives with type="page" limit="10" %} {% for item in archives %} <div> <h3><a href="{{item.Link}}">{{item.Title}}</a></h3> <p>发布于:{{stampToDate(item.CreatedTime, "2006-01-02")}}</p> <p>最近更新:{{stampToDate(item.UpdatedTime, "01/02 15:04")}}</p> </div> {% endfor %} {% endarchiveList %}
常用的时间格式化示例
为了更好地说明 stampToDate 的灵活性,这里列举一些常见的格式化需求及其对应的格式字符串:
仅显示日期(年-月-日) 例如:
2023-02-09格式字符串:"2006-01-02"显示完整日期和时间 例如:
2023-02-09 15:04:05格式字符串:"2006-01-02 15:04:05"中文日期格式 例如:
2023年02月09日格式字符串:"2006年01月02日"短日期格式(月/日) 例如:
02/09格式字符串:"01/02"带星期几的格式 例如:
周四, 2023年02月09日格式字符串:"Mon, 2006年01月02日"(注意这里的Mon代表星期几,会自动翻译)显示时间(小时:分钟) 例如:
15:04格式字符串:"15:04"
您可以根据网站的整体设计和用户习惯,自由选择和组合这些格式。
小结
通过 stampToDate 标签和Go语言灵活的日期时间格式化参考,AnQiCMS让在模板中精确控制文章发布和更新时间的显示变得非常简单。无论是需要简洁的日期,还是详细到秒级的时间,您都可以通过调整格式字符串轻松实现,确保网站内容时效性的准确传达。
常见问题(FAQ)
问:为什么AnQiCMS的时间格式化字符串看起来很奇怪,不是常见的
Y-m-d? 答:这是因为AnQiCMS基于Go语言开发。Go语言在格式化时间时,不使用占位符,而是使用一个固定的参考时间2006-01-02 15:04:05。您只需根据这个参考时间,将其对应部分替换为您希望的输出样式即可。例如,想要显示年份,就在格式字符串中写2006,想要显示月份,就写01。问:如果我的文章没有更新过,
UpdatedTime会显示什么? 答:如果文章从未被更新,UpdatedTime字段通常会和CreatedTime字段的值相同。在实际显示中,您可以选择性地只显示CreatedTime,或者在UpdatedTime与CreatedTime不同时才显示更新时间,以避免不必要的重复信息。问:能否在格式化时间戳时,增加一些本地化的星期几名称,比如“星期一”、“Monday”? 答:可以的。Go语言的时间格式化参考字符串中,
Mon代表星期几的简写(例如“周一”),Monday代表星期几的全称(例如“星期一”)。系统会根据当前网站的语言设置,自动进行本地化显示。例如,在中文站点使用"Mon, 2006年01月02日",可能会显示为周一, 2023年02月09日。