如何在AnQiCMS模板中输出当前的日期和时间,并指定格式?

📅 👁️ 64

在 AnQiCMS 模板中显示日期和时间,并按照特定格式输出,是网站内容运营中常见的需求。无论是展示文章发布时间、活动截止日期,还是在页脚显示当前的年份,准确且美观的时间信息都能提升用户体验。AnQiCMS 提供了简洁高效的模板标签,让您可以轻松实现这些功能。

接下来,我们将详细探讨如何在 AnQiCMS 模板中输出当前的日期和时间,并指定您需要的格式。


一、使用 stampToDate 标签格式化时间戳

在网站内容管理中,文章的创建时间、更新时间等通常是以时间戳的形式存储在数据库中。stampToDate 标签正是为了方便地将这些时间戳转换为可读的日期和时间格式而设计的。

何时使用: 当您需要显示从数据库中获取的、以时间戳形式存在的日期和时间,例如 archive.CreatedTime(文章发布时间)或 archive.UpdatedTime(文章更新时间)时,stampToDate 标签是您的首选。

语法结构:

{{stampToDate(时间戳, "格式")}}

这里的核心是两个参数:

  1. 时间戳: 一个10位的 Unix 时间戳(秒级)。AnQiCMS 内部提供的 CreatedTimeUpdatedTime 等字段默认就是10位时间戳。
  2. 格式: 这是一个字符串,它定义了您希望日期和时间输出的样式。需要特别注意的是,AnQiCMS(基于 Go 语言开发)的格式化规则与 PHP 或 Java 等语言常用的 Y-m-dYYYY-MM-DD 等占位符不同,它采用的是 固定的参考布局时间 来定义格式。这个参考布局是:2006年01月02日 15时04分05秒。您需要将您期望的日期时间格式与这个参考布局进行匹配。

常用格式示例:

  • 显示年份: "2006"
  • 显示月份: "01"
  • 显示日期: "02"
  • 显示小时(24小时制): "15"
  • 显示分钟: "04"
  • 显示秒: "05"
  • 显示年-月-日: "2006-01-02"
  • 显示年/月/日: "2006/01/02"
  • 显示年.月.日: "2006.01.02"
  • 显示中文年-月-日: "2006年01月02日"
  • 显示时:分: "15:04"
  • 显示完整日期时间: "2006-01-02 15:04:05"

代码应用示例:

假设您正在文章详情页(archive 对象可用),需要显示文章的发布时间和更新时间:

<p>
    发布时间:{{stampToDate(archive.CreatedTime, "2006年01月02日 星期一 15:04:05")}}
</p>
<p>
    最近更新:{{stampToDate(archive.UpdatedTime, "2006-01-02 15:04")}}
</p>
<p>
    文章年份:{{stampToDate(archive.CreatedTime, "2006")}}
</p>

这段代码会分别将文章的创建时间格式化为带有星期几的详细时间,更新时间格式化为年-月-日 时:分,以及单独提取发布年份。


二、使用 now 标签获取当前系统时间

除了格式化时间戳,您可能还需要在模板中直接显示页面生成时的当前系统日期和时间。例如,在网站的页脚显示当前的年份,或者在某些特殊页面展示当前时间。now 标签能够满足这种需求。

何时使用: 当您需要显示当前服务器的日期和时间,而不是从数据库中获取的特定内容的时间时,now 标签非常方便。

语法结构:

{% now "格式" %}

这里的“格式”参数与 stampToDate 标签完全相同,同样遵循 Golang 的参考布局时间格式化规则。

代码应用示例:

假设您想在网站页脚显示当前的年份和页面生成时的完整日期时间:

<footer>
    <p>版权所有 &copy; {% now "2006" %} 您的公司名称。保留所有权利。</p>
    <p>页面生成于:{% now "2006-01-02 15:04:05" %}</p>
</footer>

这段代码会在页脚显示当前的年份(例如“2023”)和页面加载时的精确日期和时间。


通过 stampToDatenow 这两个标签,AnQiCMS 为模板中的日期和时间输出提供了强大且灵活的支持。掌握了它们的用法和 Golang 特有的格式化规则,您就能轻松地在网站上展示符合各种需求的日期和时间信息。


常见问题(FAQ)

Q1:stampToDate 中的“格式”参数看起来像一个日期,我可以直接写 YYYY-MM-DD 吗?

A1: 不可以。AnQiCMS 基于 Go 语言开发,其时间格式化机制比较特殊,不是使用 YYYY-MM-DD 这样的占位符。它要求您使用一个固定的参考日期和时间 2006年01月02日 15时04分05秒 来定义您想要的格式。简单来说,如果您想显示“年-月-日”,您需要写成 "2006-01-02";如果想显示“时:分”,就写成 "15:04"。您需要将您期望的输出格式与这个参考时间中的相应部分进行匹配。

Q2:我尝试在模板中使用 {{ item.CreatedTime|date:"2006-01-02" }} 格式化文章创建时间,但页面报错了,这是为什么?

A2: date 过滤器在 AnQiCMS 模板中期望的输入是一个 Go 语言 time.Time 类型的对象。然而,AnQiCMS 模板中的 item.CreatedTime 通常是一个 Unix 时间戳(整数)。因此,直接对时间戳使用 date 过滤器会导致类型不匹配而报错。对于时间戳类型的变量,您应该使用专门的 stampToDate 标签来进行格式化,例如 {{stampToDate(item.CreatedTime, "2006-01-02")}}

Q3:stampToDate 标签中的时间戳是10位还是13位?如果我拿到的是13位时间戳怎么办?

A3: stampToDate 标签主要支持的是 10位 的 Unix 时间戳(表示自1970年1月1日以来的秒数)。AnQiCMS 系统内部的 CreatedTimeUpdatedTime 等字段也默认提供10位时间戳。如果您拿到的是13位的毫秒级时间戳,您需要先将其除以1000转换为秒级(例如在后端控制器中处理),然后才能在 stampToDate 标签中使用。

相关文章

`extends`标签在AnQiCMS模板继承体系中扮演什么角色?

在AnQiCMS的模板开发中,`extends`标签扮演着核心角色,它是构建高效、可维护且结构统一的网站模板的关键。可以把`extends`标签理解为创建“母版”和“子页面”之间关联的桥梁,它让您可以轻松地为整个网站定义一个通用的布局骨架,而无需在每个页面中重复编写大量相同的代码。 想象一下,一个网站通常会有固定不变的头部(header)、底部(footer)以及侧边栏(sidebar)

2025-11-08

`macro`宏函数在AnQiCMS模板中如何帮助我减少重复的渲染逻辑?

在安企CMS的模板开发中,提升效率和保持代码整洁是每个开发者都在追求的目标。网站页面往往包含许多结构相似但内容不同的区域,例如文章列表中的每一篇文章卡片、产品详情页的各项特点展示,或是导航菜单中的每个链接项。如果每次都重复编写这些相似的渲染逻辑,不仅耗时耗力,而且一旦需要修改,就可能面临在多个地方进行重复性改动的困境。幸运的是,AnQiCMS强大的模板系统提供了 `macro` 宏函数

2025-11-08

在`include`子模板时,如何向其传递特定的变量或数据?

安企CMS 模板进阶:`include` 子模板的数据传递技巧与实践 在安企CMS的模板开发中,`include` 标签无疑是提升模板复用性和模块化程度的强大工具。它允许我们将公共的代码片段(如页面头部、底部、侧边栏等)抽取出来,然后在需要的地方引入,从而避免重复编写,使模板结构更清晰,维护更高效。然而,这些被引入的子模板往往需要显示不同的内容,这就引出了一个核心问题:如何在引入子模板时

2025-11-08

如何使用`include`标签在AnQiCMS模板中复用页头、页脚等公共代码片段?

在AnQiCMS中构建网站模板,高效的代码复用是提升开发速度和维护效率的关键。想象一下,网站的页头(Header)和页脚(Footer)几乎在每个页面都会出现,如果每个页面都重复编写相同的代码,不仅耗时,而且一旦需要修改,就得逐个页面查找并更新,这无疑是巨大的工作量。幸运的是,AnQiCMS提供了一个强大且直观的工具来解决这个问题——那就是模板中的`include`标签

2025-11-08

模板中输出变量时,如何通过过滤器进行内容的安全转义以防止XSS攻击?

在网站内容的管理和展示过程中,确保用户数据的安全是至关重要的一环。特别是当网站需要展示用户提交的内容或从外部源获取的数据时,如何有效防范跨站脚本(XSS)攻击,是每一位网站运营者都需要关注的问题。安企CMS(AnQiCMS)在设计之初就充分考虑了这一点,通过其强大的模板引擎和灵活的过滤器机制,为内容的输出提供了坚实的安全保障。 ### XSS攻击

2025-11-08

如何在首页展示最新的N篇文章或产品,并进行分页控制?

## 安企CMS:在首页高效展示最新内容并实现分页的**实践 网站首页作为访客了解站点内容和获取最新信息的重要入口,清晰、有效地展示最新发布的文章或产品至关重要。安企CMS提供了强大且灵活的模板标签,帮助我们轻松实现这一目标,同时还能对内容进行精细化的分页控制,确保用户体验流畅。 ### 核心功能概览:`archiveList` 与 `pagination` 要在首页展示最新的内容

2025-11-08

如何根据分类ID筛选并循环输出特定分类下的文档列表?

在构建和运营网站时,内容的组织与呈现方式至关重要。尤其是当网站内容日益丰富,如何让访问者迅速找到他们感兴趣的信息,并清晰地浏览特定主题下的所有文章,就成了一个需要精心设计的问题。安企CMS(AnQiCMS)提供了强大且灵活的内容管理能力,让我们可以轻松实现对文档列表的精准控制与展示。今天,我们就来探讨一个常见的需求:如何根据分类ID,筛选并循环输出特定分类下的文档列表

2025-11-08

如何在文档列表中排除特定分类或多个分类的文章?

在安企CMS中管理网站内容时,我们常常需要精确控制文章的展示。有时,我们可能希望某个特定分类的文章不出现在常规的文章列表中,例如用于内部通知、测试内容,或者一些只在特定页面展示的推广信息。安企CMS提供了简洁而高效的方法来满足这类需求,让您能够灵活地排除特定分类或多个分类的文章,从而实现更精准的内容呈现。 ### 核心解决方案:灵活运用 `archiveList`

2025-11-08