`stampToDate`过滤器:如何在AnQiCMS模板中格式化Unix时间戳?

📅 👁️ 73

在AnQiCMS的模板设计中,数据的展示方式对用户体验至关重要。尤其是日期和时间这类信息,如果以原始的Unix时间戳形式呈现,对普通访客来说是难以理解的。幸运的是,AnQiCMS提供了一个非常实用的过滤器——stampToDate,它能帮助我们轻松地将这些机器可读的数字序列转化为清晰、友好的日期时间格式。

认识Unix时间戳与stampToDate过滤器

首先,简单了解一下什么是Unix时间戳。它本质上是一个从1970年1月1日00:00:00 UTC(协调世界时)起经过的秒数。在数据库中,为了存储和计算效率,常常以这种格式保存日期时间。例如,文档的发布时间(CreatedTime)或更新时间(UpdatedTime)通常就是以Unix时间戳的形式存在。

在AnQiCMS的模板里,如果直接输出这些时间戳,您会看到一长串数字,比如1609470335。而stampToDate过滤器就像一个翻译官,它的任务就是将这串数字“翻译”成我们习惯阅读的日期和时间格式。

使用stampToDate过滤器的基本语法非常直观: {{stampToDate(时间戳, "格式")}}

这里有两个关键部分:

  1. 时间戳: 这是您想要格式化的Unix时间戳,通常是模板中某个变量(如item.CreatedTime)。请注意,它需要是一个10位的数字,代表秒。
  2. 格式: 这是一个字符串,用来告诉过滤器您希望日期时间以何种具体形式呈现。

掌握Go语言的日期格式化魔法

stampToDate过滤器采用的是Go语言特有的日期格式化规则,这与PHP的Y-m-d或Python的%Y-%m-%d有所不同。Go语言的格式化不是通过字母代号来表示年、月、日,而是通过一个固定的参考时间——2006年01月02日15时04分05秒,外加时区和毫秒。您只需要记住这个“魔法数字”对应的各个部分,然后用您想要的格式来替换它们即可。

让我们通过一些常见示例来理解这个格式:

  • 只显示年份:将参考时间中的年份2006替换为2006。 例如:{{stampToDate(publishStamp, "2006")}} -> 2021
  • 显示年-月-日:将参考时间中的2006-01-02替换为2006-01-02。 例如:{{stampToDate(publishStamp, "2006-01-02")}} -> 2021-06-30
  • 显示年/月/日:将参考时间中的2006-01-02替换为2006/01/02。 例如:{{stampToDate(publishStamp, "2006/01/02")}} -> 2021/06/30
  • 显示带有中文的日期:将参考时间中的2006-01-02替换为2006年01月02日。 例如:{{stampToDate(publishStamp, "2006年01月02日")}} -> 2021年06月30日
  • 显示时:分:秒:将参考时间中的15:04:05替换为15:04:05。 例如:{{stampToDate(publishStamp, "15:04:05")}} -> 12:00:00
  • 显示完整的日期时间:将参考时间中的2006-01-02 15:04:05替换为2006-01-02 15:04:05。 例如:{{stampToDate(publishStamp, "2006-01-02 15:04:05")}} -> 2021-06-30 12:00:00

关键在于,您需要记住2006-01-02 15:04:05这个骨架,然后根据您需要的格式来“拼凑”出新的格式字符串。例如,如果想要月/日/年的格式,您就写01/02/2006

stampToDate的实际应用

在AnQiCMS中,您会经常在文章列表、文章详情、评论列表等地方用到日期时间显示。比如,当您遍历一个文档列表(archiveList)时,每个文档项(item)通常都会包含CreatedTime(创建时间)和UpdatedTime(更新时间)字段。这些字段通常存储的就是Unix时间戳。

假设您正在设计一个文章列表页面,希望显示每篇文章的发布日期:

{# 假设 publishStamp 是一个Unix时间戳变量,例如 1609470335 #}
{% set publishStamp = 1609470335 %}

<p>格式化为 2021年06月30日: {{stampToDate(publishStamp, "2006年01月02日")}}</p>
<p>格式化为 2021-06-30: {{stampToDate(publishStamp, "2006-01-02")}}</p>
<p>格式化为 2021/06/30 12:00:00: {{stampToDate(publishStamp, "2006/01/02 15:04:05")}}</p>
<p>格式化为 30/06/2021: {{stampToDate(publishStamp, "02/01/2006")}}</p>
<p>格式化为 12:00:00: {{stampToDate(publishStamp, "15:04:05")}}</p>

在一个文章列表循环中,它会是这样的:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <article>
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <p>
            发布时间:{{stampToDate(item.CreatedTime, "2006年01月02日 15:04")}}
            <span class="views">阅读量:{{item.Views}}</span>
        </p>
        <p>{{item.Description}}</p>
        <a href="{{item.Link}}" class="read-more">阅读更多</a>
    </article>
    {% empty %}
    <p>暂时没有文章。</p>
    {% endfor %}
{% endarchiveList %}

在这段代码中,item.CreatedTime是一个Unix时间戳,stampToDate过滤器将其转换成了年-月-日 时:分的格式,使得文章列表的日期显示更加友好和易读。

注意事项

  • Go语言的参考时间是关键:始终以2006-01-02 15:04:05作为基准来构建您的格式字符串。记住这不是自定义占位符,而是Go语言的特定日期值。
  • Unix时间戳的位数stampToDate过滤器期望接收10位的Unix时间戳(秒级)。如果您的时间戳是13位(毫秒级),您需要先将其除以1000,例如{{stampToDate(item.CreatedTime / 1000, "格式")}}
  • 避免与date过滤器混淆:AnQiCMS模板中可能还存在一个名为date的过滤器。date过滤器通常用于格式化Go语言原生的time.Time类型对象,而不是原始的Unix时间戳。如果将Unix时间戳传递

相关文章

`date`过滤器:如何将GoLang的`time.Time`类型格式化为特定日期字符串?

在安企CMS的模板开发中,灵活地展示日期和时间是内容呈现不可或缺的一部分。您可能经常需要将系统或内容中的日期信息,按照特定的格式,比如“`年-月-日`”、“`月/日 时:分`”等方式呈现在用户面前。这时,`date`过滤器便成为了您的得力助手。 安企CMS作为一款基于Go语言构建的内容管理系统,在模板层面也自然地沿用了GoLang在处理日期时间上的一些约定

2025-11-08

如何在AnQiCMS模板中将数字字符串转换为整数或浮点数类型?

在AnQiCMS模板开发中,我们经常会遇到需要处理各种类型数据的情况。有时候,从数据库获取或者通过用户输入的数据,即使它们代表的是数字,系统在模板层也可能将其作为字符串类型来处理。在这种情况下,如果直接对这些“数字字符串”进行数学运算或数值比较,可能会导致意料之外的结果甚至错误。因此,了解如何在AnQiCMS模板中将数字字符串转换为整数或浮点数类型,对于确保数据处理的准确性和逻辑的正确性至关重要

2025-11-08

`escape`和`escapejs`过滤器在防止XSS攻击或处理特殊字符中的作用?

在网站内容运营中,内容的展示方式和安全性是同等重要的。安企CMS作为一款高效的内容管理系统,在保障网站安全方面提供了周全的考虑,其中`escape`和`escapejs`过滤器就是我们对抗网络攻击、确保内容正确显示的重要工具。理解它们的作用,能帮助我们更好地管理和发布内容。 ### 网站安全的第一道防线:XSS攻击与内容转义 想象一下,如果您的网站允许用户提交评论或发布文章

2025-11-08

`safe`过滤器:何时使用,有哪些潜在的安全风险需要特别注意?

在安企CMS的模板开发过程中,内容的展示方式是灵活多样的,而其中一个非常重要的过滤器就是`safe`。理解`safe`过滤器的工作原理、何时使用以及它可能带来的安全考量,对于构建一个既功能完善又安全可靠的网站至关重要。 ### `safe` 过滤器的核心作用 首先,我们来了解一下安企CMS模板引擎的一个基本安全机制:默认的自动转义。为了防止跨站脚本(XSS)攻击等常见的网页安全漏洞

2025-11-08

`floatformat`过滤器:如何精确控制浮点数的小数点位数显示?

在网站内容管理中,我们经常需要展示各种数字,尤其是带有小数点的浮点数。无论是商品价格、统计数据还是计算结果,这些数字的展示方式直接影响用户体验和信息的准确性。不统一或不精确的小数点位数,可能让页面显得混乱,甚至在涉及金融或精确测量时导致误解。 安企CMS(AnQiCMS)深知这一需求,在模板系统中提供了功能强大的 `floatformat` 过滤器,旨在帮助内容运营者轻松

2025-11-08

模板循环:`forloop.Counter`和`forloop.Revcounter`在遍历数组时如何辅助索引操作?

在 AnQiCMS 的模板开发中,我们经常需要处理各种数据列表,例如文章列表、产品展示或者导航菜单。`for` 循环是遍历这些列表的核心工具。然而,仅仅是简单地列出数据项往往不能满足所有需求,我们可能还需要知道当前遍历到的项目是列表中的第几项,或者距离列表末尾还有多少项。这时,AnQiCMS 模板引擎中内置的 `forloop.Counter` 和 `forloop.Revcounter`

2025-11-08

`capfirst`、`lower`、`upper`、`title`过滤器:如何处理英文文本的大小写转换需求?

在网站内容运营中,文本格式的统一性和美观度对于提升用户体验至关重要。特别是在处理英文文本时,灵活地控制大小写能够帮助我们更好地呈现信息,无论是用于标题、关键词还是正文内容。安企CMS(AnQiCMS)提供了一系列实用的模板过滤器,让您能够轻松应对各种英文大小写转换需求。本文将深入探讨 `capfirst`、`lower`、`upper` 和 `title` 这四个常用的过滤器

2025-11-08

`center`、`ljust`、`rjust`过滤器:如何控制字符串在指定宽度内的对齐方式?

在网站内容运营中,内容的呈现方式往往决定了用户的第一印象和阅读体验。当我们需要在网站模板中展示文本信息时,如何确保它们整齐划一、美观专业,是许多运营者关心的问题。AnQiCMS 作为一款以用户体验和高度定制为核心的内容管理系统,深谙此道,其强大的模板引擎提供了多种实用的过滤器,帮助我们轻松实现字符串的对齐控制。 今天,我们就来深入了解 `center`、`ljust` 和 `rjust`

2025-11-08