AnQiCMS 如何将 GoLang 的 `time.Time` 类型变量格式化为可读的日期字符串显示?

📅 👁️ 69

在 AnQiCMS 中管理网站内容,我们经常会遇到需要显示日期和时间的情况,例如文章的发布时间、更新时间,或者用户上次登录的时间等等。这些时间数据在 GoLang 后端通常以 time.Time 类型存储。当它们被传递到前端模板时,如果不进行适当的格式化,可能会显示为一串难以理解的时间戳或默认的Go语言格式,这显然不符合我们展示给访客的需求。

幸运的是,AnQiCMS 为我们提供了强大而灵活的模板标签和过滤器,可以轻松地将这些 GoLang 的 time.Time 变量格式化为我们想要的任何日期字符串格式。

核心利器:stampToDate 格式化标签

AnQiCMS 的模板引擎支持类似 Django 的语法,其中有一个非常实用的标签,专门用于格式化时间戳(或者说,那些从后端传入的代表时间的数字)。这个标签就是 stampToDate

它的基本用法是:{{ stampToDate(时间戳变量, "格式化字符串") }}

这里的关键在于第二个参数:“格式化字符串”。AnQiCMS 使用的是 GoLang 独特的“参考时间”来定义格式。这个参考时间是一个固定的日期:2006-01-02 15:04:05.999999999 -0700 MST。您不需要记住这个冗长的字符串,只需要理解它的每个部分代表的含义:

  • 2006:代表年份(YYYY
  • 01:代表月份(MM),例如 01 代表一月
  • 02:代表日期(DD),例如 02 代表每月的第二天
  • 15:代表小时(24小时制,HH),例如 15 代表下午3点
  • 04:代表分钟(mm),例如 04 代表4分钟
  • 05:代表秒钟(ss),例如 05 代表5秒

这意味着,如果您想将时间格式化为“年-月-日”的形式,您只需在格式化字符串中写入 "2006-01-02" 即可。如果您想要显示“月/日/年 时:分”,那么就可以写成 "01/02/2006 15:04"

让我们看几个实际的例子来理解它的用法:

  • 显示日期和时间: {{ stampToDate(archive.CreatedTime, "2006-01-02 15:04:05") }} 可能会显示为 2023-10-27 10:30:45
  • 只显示日期: {{ stampToDate(archive.CreatedTime, "2006年01月02日") }} 可能会显示为 2023年10月27日
  • 美式日期格式: {{ stampToDate(archive.CreatedTime, "Jan 02, 2006") }} 可能会显示为 Oct 27, 2023
  • 只显示时间(小时:分钟): {{ stampToDate(archive.CreatedTime, "15:04") }} 可能会显示为 10:30

实践应用:从文档和用户数据中获取时间

在 AnQiCMS 中,许多地方都涉及时间数据。例如,当我们显示一篇文章的详情时,可以通过 archive.CreatedTimearchive.UpdatedTime 来获取创建和更新的时间。这些变量通常以时间戳的形式提供,可以直接传入 stampToDate 标签进行格式化。

假设我们正在编辑文章详情页的模板,可以这样显示文章的发布和更新时间:

<p>发布于:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</p>
<p>最后更新:{{ stampToDate(archive.UpdatedTime, "2006-01-02 15:04") }}</p>

除了文章,用户模块也包含时间信息,例如用户的上次登录时间 user.LastLogin 或 VIP 过期时间 user.ExpireTime。您同样可以使用 stampToDate 来格式化这些数据:

<p>上次登录时间:{{ stampToDate(user.LastLogin, "2006-01-02") }}</p>
<p>VIP 过期日期:{{ stampToDate(user.ExpireTime, "2006年01月02日") }}</p>

如果需要显示当前时间或年份,AnQiCMS 也提供了 {% now %} 标签,它的用法与 stampToDate 的格式化部分类似:

<p>版权所有 © {% now "2006" %}</p>
<p>当前时间:{% now "2006-01-02 15:04:05" %}</p>

小心区分:stampToDatedate 过滤器

在 AnQiCMS 的模板中,您可能还会看到一个名为 date 的过滤器。这个过滤器也能格式化时间,但它与 stampToDate 有一个重要的区别:

  • stampToDate:专门用于处理时间戳(通常是 10 位或 13 位的数字,代表从 Unix 纪元开始的秒数或毫秒数)。这是 AnQiCMS 模板中最常用来格式化日期的方法,因为它后端会将数据库中的日期字段转换为时间戳传递给前端。
  • date 过滤器:用于格式化 GoLang 原生的 time.Time 对象。如果模板变量本身就是一个 GoLang time.Time 类型(而不是一个简单的数字时间戳),那么可以使用 {{ 变量 | date:"格式化字符串" }} 这样的语法。

重要提示: 大多数情况下,当我们从 AnQiCMS 的数据标签(如 archiveListarchiveDetail 等)中获取 CreatedTimeUpdatedTime 等时间字段时,它们会以时间戳的形式提供。因此,您应该优先使用 stampToDate 标签。如果错误地将时间戳传递给 date 过滤器,模板解析时可能会报错。

通过灵活运用 stampToDate 标签,配合 GoLang 精确的格式化字符串,您就可以在 AnQiCMS 网站上优雅地展示任何日期和时间信息,让您的网站内容更加易读和专业。


常见问题解答 (FAQ)

1. 为什么 stampToDate 的格式字符串看起来这么奇怪,使用的是 “2006-01-02 15:04:05” 这样的数字组合,而不是 “YYYY-MM-DD”?

这是 GoLang 语言特有的日期时间格式化方式,它使用一个固定的“参考时间” 2006-01-02 15:04:05.999999999 -0700 MST 来作为格式模式。您不需要记住具体的日期,只需理解这个参考时间中每个数字对应的含义:2006 代表年份,01 代表月份,02 代表日期,15 代表小时(24小时制),04 代表分钟,05 代表秒

相关文章

如何在 AnQiCMS 模板中判断一个字符串是否包含某个关键词并显示结果?

在网站运营中,我们经常会遇到这样的需求:根据网页内容的特定信息,动态地调整内容的展示方式。比如,如果一篇文章标题中包含了“促销”或“活动”等关键词,我们可能希望它自动显示一个醒目的标签;或者,为了内容审核和用户体验,需要检查文章中是否存在某些敏感词汇,并据此进行相应的处理。 安企CMS作为一个功能强大且灵活的内容管理系统,提供了直观的模板标签和过滤器,让这些动态判断和展示变得非常简单

2025-11-09

AnQiCMS 的模板继承 (`extends`) 和包含 (`include`) 标签如何优化页面布局显示?

在网站建设中,如何高效地组织页面结构,让代码可复用、易维护,是提升开发效率和项目质量的关键。AnQiCMS 充分考虑了这一点,提供了强大的模板继承(`extends`)和模板包含(`include`)标签,让我们可以像搭积木一样构建网站,轻松实现复杂的页面布局和显示优化。 ### 一、模板包含(`include`):构建灵活的页面模块 想象一下,一个网站的头部导航、底部版权信息

2025-11-09

AnQiCMS 如何在文章内容中实现锚文本的自动替换和显示?

在网站运营中,锚文本(Anchor Text)是连接不同页面、提升内容关联性和优化搜索引擎排名的重要元素。一个精心设置的锚文本不仅能引导用户发现更多相关信息,还能帮助搜索引擎更好地理解页面内容和网站结构。对于使用安企CMS(AnQiCMS)管理内容的您来说,系统提供了高效且智能的机制,让文章内容中的关键词自动转换为带有链接的锚文本,从而大大提升内容运营的效率和效果。 ### 安企CMS

2025-11-09

如何在 AnQiCMS 评论表单中添加验证码功能以减少垃圾评论的显示?

在网站运营中,垃圾评论无疑是一个让人头疼的问题。它们不仅会影响网站的用户体验,稀释高质量的讨论内容,还可能在无形中损害网站的SEO表现,甚至占据宝贵的服务器资源。面对日益智能化的垃圾评论机器人,我们需要更有效的防御手段。幸运的是,AnQiCMS 提供了一个简单而强大的解决方案——为评论表单添加验证码功能,这能显著减少垃圾评论的侵扰。 这篇文章将详细带你了解如何在 AnQiCMS

2025-11-09

如何在 AnQiCMS 模板中实现自定义的 JSON-LD 结构化数据以优化搜索结果显示?

在当今的数字营销环境中,仅仅拥有优质内容是不够的,如何让搜索引擎更好地理解和展示这些内容,正变得越来越关键。结构化数据,特别是 JSON-LD,就是我们手中的一把利器,它能帮助我们的网站在搜索结果中以更丰富、更吸引人的形式呈现,也就是我们常说的“富摘要”(Rich Snippets)。 安企CMS(AnQiCMS)作为一款以Go语言为核心开发的企业级内容管理系统

2025-11-09

AnQiCMS 的 `urlizetrunc` 过滤器如何截取过长的 URL 并在链接中显示省略号?

AnQiCMS `urlizetrunc` 过滤器:让冗长网址优雅变身省略号 在日常的网站运营中,我们经常需要在文章、评论或者产品描述中引用外部链接。这些链接可能是为了提供参考资料、引导用户访问相关页面,或是展示产品视频等等。然而,有时这些 URL 会非常冗长,不仅占据大量页面空间,影响整体布局的美观性,还会降低内容的阅读体验。想象一下,如果一个段落中充斥着几行长的 URL 字符串

2025-11-09

如何在 AnQiCMS 模板中移除 HTML 标签,只显示纯文本内容?

在 AnQiCMS 的内容管理实践中,有时我们会遇到这样的需求:从包含丰富格式(如加粗、斜体、图片、链接等)的文档内容中,提取出纯粹的文本信息。这可能听起来有些矛盾,内容管理系统本就致力于内容的多元展示,为何还要“剥离”这些格式呢?然而,在许多特定场景下,只显示纯文本内容却能发挥关键作用,例如为文章生成简洁的摘要、优化搜索引擎的元描述(Meta Description)

2025-11-09

AnQiCMS中如何自动识别文本中的URL并将其转换为可点击的`<a>`标签?

在内容管理和网站运营中,我们经常需要将文本中的网址链接转化为可点击的超链接,以便用户能直接跳转访问。手动操作不仅效率低下,还容易遗漏,尤其是在内容量庞大的网站上。安企CMS深知这一痛点,提供了一种优雅且高效的解决方案,让我们能够轻松实现文本中URL的自动识别与转换。 要让安企CMS自动识别文本中的URL并将其转换为可点击的`<a>`标签,我们主要会用到它强大的模板过滤器功能。具体来说

2025-11-09