`stampToDate`过滤器在安企CMS中,如何将Unix时间戳格式化为“YYYY年MM月DD日 HH:MM”等多种本地化日期字符串?

📅 👁️ 69

在网站内容管理中,日期和时间信息的展示无处不在。无论是文章的发布时间、产品的上架日期,还是评论的提交时刻,一个清晰、易读的日期格式对于提升用户体验至关重要。安企CMS(AnQiCMS)深知这一需求,提供了强大的模板标签和过滤器,其中stampToDate过滤器便是将原始Unix时间戳转化为我们熟悉的本地化日期字符串的利器。

本文将深入探讨stampToDate过滤器的用法,帮助您在安企CMS模板中轻松实现各种日期时间格式的自定义显示。

理解安企CMS中的Unix时间戳

在安企CMS中,许多存储在数据库中的日期和时间信息,如文档的创建时间CreatedTime或更新时间UpdatedTime,通常以Unix时间戳的形式存在。Unix时间戳是一个整数,代表从UTC时间1970年1月1日0时0分0秒(又称Unix纪元)起经过的秒数。

直接在模板中显示这样的时间戳,例如1609470335,对普通用户来说是难以理解的。为了提供更好的阅读体验,我们需要将其格式化为“2021年01月01日 12:25”这样的本地化字符串。

核心工具:stampToDate过滤器

安企CMS模板引擎借鉴了Django的语法,并提供了stampToDate这一便捷的过滤器,专门用于将Unix时间戳格式化为可读的日期时间字符串。

基本语法:

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

其中:

  • 时间戳:通常是您从数据对象(如item.CreatedTime)中获取的10位Unix时间戳。
  • "格式":这是一个字符串,定义了您希望日期时间显示成的具体格式。需要特别注意的是,这个“格式”并非我们常见的Y-m-d H:i:s这类模式,而是采用了Go语言独特的“参考时间”机制。

掌握GoLang时间格式的秘诀

Go语言在定义时间格式时,使用一个固定的参考时间点来表示各时间单位。这个参考时间就是:2006年01月02日 15点04分05秒

这意味着,当你希望显示年份时,就使用2006;希望显示月份时,就使用01(代表一月);希望显示日期时,就使用02(代表二号),以此类推。以下是常用的对应关系:

  • 2006 -> 年 (YYYY)
  • 011 -> 月 (MM/M)
  • 022 -> 日 (DD/D)
  • 153 -> 小时 (24小时制 HH/H) 或 (12小时制 hh/h)
  • 04 -> 分钟 (MM)
  • 05 -> 秒 (SS)
  • Mon -> 星期几 (如:Mon, Tue, Wed)
  • Monday -> 完整的星期几 (如:Monday, Tuesday)
  • Jan -> 英文月份缩写 (如:Jan, Feb)
  • January -> 完整的英文月份 (如:January, February)

通过组合这些参考时间元素,您几乎可以定义出任何想要的日期时间格式。

常用格式化示例与应用

假设我们有一个Unix时间戳1672502400,它对应的是2023年01月01日 00:00:00。我们来看看如何用stampToDate过滤器将其格式化成多种常见的本地化字符串。

  1. “YYYY年MM月DD日 HH:MM” (如:2023年01月01日 00:00)

    {{ stampToDate(1672502400, "2006年01月02日 15:04") }}
    

    输出:2023年01月01日 00:00

  2. “YYYY-MM-DD” (如:2023-01-01)

    {{ stampToDate(1672502400, "2006-01-02") }}
    

    输出:2023-01-01

  3. “MM/DD HH:MM” (如:01/01 00:00)

    {{ stampToDate(1672502400, "01/02 15:04") }}
    

    输出:01/01 00:00

  4. “HH:MM:SS” (如:00:00:00)

    {{ stampToDate(1672502400, "15:04:05") }}
    

    输出:00:00:00

  5. “YYYY/MM/DD 星期几” (如:2023/01/01 星期日)

    {{ stampToDate(1672502400, "2006/01/02 星期Monday") }}
    

    输出:2023/01/01 星期Sunday (注意Go语言的Monday对应输出完整的星期几,这里会是Sunday,因为1672502400是周日)

实际应用场景举例

在安企CMS的模板设计中,stampToDate过滤器常用于archiveList(文档列表)、archiveDetail(文档详情)和commentList(评论列表)等标签中。

例如,在一个文档列表中显示每篇文章的发布时间:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <div class="article-item">
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>发布时间:
            <time datetime="{{ stampToDate(item.CreatedTime, "2006-01-02T15:04:05") }}">
                {{ stampToDate(item.CreatedTime, "2006年01月02日 15:04") }}
            </time>
        </p>
        <p>{{ item.Description }}</p>
    </div>
    {% empty %}
    <p>暂时没有文章。</p>
    {% endfor %}
{% endarchiveList %}

在这个例子中,item.CreatedTime获取到的是Unix时间戳,通过stampToDate过滤器,我们将其格式化成了用户友好的“年-月-日 时:分”形式,同时也在<time>标签的datetime属性中输出了机器可读的ISO 8601格式,兼顾了用户体验和SEO。

相关文章

除了`stampToDate`,安企CMS的`date`过滤器在处理`time.Time`类型时,如何实现自定义日期时间格式化?

在安企CMS中,日期和时间的展示常常需要根据网站的实际需求进行灵活的调整。我们都知道,`stampToDate` 过滤器对于处理Unix时间戳非常方便,它能将一串数字时间戳轻松转换成我们需要的日期格式。但有时,我们在模板中处理的日期值可能已经是一个Go语言的 `time.Time` 类型对象,而不是原始的时间戳。在这种情况下,安企CMS提供了另一个强大的工具,那就是 `date`

2025-11-08

安企CMS模板如何利用`divisibleby`过滤器,在循环中实现隔行变色或按N个元素分组输出?

在网站运营中,精心设计的页面布局和内容展示,能够显著提升用户体验和内容的可读性。尤其在列表内容较多的场景下,如果所有条目都以相同样式呈现,容易造成视觉疲劳。这时候,隔行变色或按特定数量分组输出,就能很好地解决这些问题。安企CMS(AnQiCMS)的模板引擎,凭借其灵活的Django模板语法,提供了强大的过滤器功能,其中`divisibleby`过滤器便是实现这类需求的一个利器

2025-11-08

`length_is`过滤器在安企CMS模板中如何用于验证用户输入或数据列表的长度,并返回布尔值进行条件渲染?

在安企CMS的模板开发中,灵活地控制内容的显示方式是提升网站用户体验的关键。其中,`length_is` 过滤器便是一个非常实用的工具,它能帮助我们在模板中轻松地对用户输入或数据列表的长度进行校验,并根据校验结果进行有条件的渲染。 `length_is` 过滤器的核心作用是判断一个变量(无论是字符串、数组还是映射)的长度是否与我们预设的某个值相等。它并不会直接返回具体的长度数值

2025-11-08

`length`过滤器在计算安企CMS模板中中文字符串长度时,是按字节还是按字符计数?如何影响输出?

在安企CMS的模板开发中,处理字符串长度是一个常见的需求。当内容涉及到多语言,特别是包含中文字符时,一个字符串的长度究竟是按照字节(byte)还是字符(character)来计算,会直接影响模板输出的准确性和内容的呈现效果。 安企CMS模板使用的`length`过滤器,正是为了解决这一问题而设计的。它在计算字符串长度时,是**按照字符而非字节进行计数的**。这意味着,无论是英文字母

2025-11-08

如何在安企CMS模板中安全地使用`truncatechars_html`过滤器,截取HTML富文本内容并自动闭合标签?

在网站内容运营中,我们经常需要在列表页、摘要区域或特定版块显示文章、产品或单页面的部分内容。这些内容往往是包含 HTML 标签的富文本,如果简单地按字符数进行截取,很可能会导致 HTML 标签被截断,从而破坏页面的布局和显示效果。例如,一个 `<p>这是一个段落<strong id="test">中的加粗</str...</p>` 这样的内容如果被粗暴截断,可能会导致页面出现未闭合的

2025-11-08

`truncatewords`和`truncatechars`过滤器在截取安企CMS文章摘要时,对中英文字符和单词的截断逻辑有何不同?

在安企CMS中,为了在列表页或预览区域展示文章摘要,我们常常需要对文章内容进行截取。这时,`truncatewords` 和 `truncatechars` 这两个过滤器就派上了用场。它们都能帮助我们将冗长的内容精简,但两者在截取逻辑上有着显著的区别,尤其是在处理中英文字符和单词时,其表现更是大相径庭。理解这些差异,能帮助我们更好地控制摘要的呈现效果。 ## `truncatechars`

2025-11-08

如何利用`upper`、`lower`、`capfirst`和`title`过滤器,统一安企CMS前端页面的英文标题大小写格式?

在网站运营中,内容展示的专业度和一致性对于提升用户体验和品牌形象至关重要。尤其是在处理英文标题时,统一的大小写格式不仅让页面看起来更整洁,也间接影响着内容的可读性。安企CMS(AnQiCMS)凭借其基于Django模板引擎的强大功能,提供了几个非常实用的过滤器,可以帮助我们轻松实现前端页面英文标题的大小写格式化。 这些过滤器包括 `upper`、`lower`、`capfirst` 和

2025-11-08

`cut`过滤器在安企CMS模板中,如何高效移除字符串中特定的标点符号或空格,以净化输出内容?

在安企CMS的日常运营中,我们经常会遇到需要对模板输出的内容进行精细化处理的情况。无论是为了让页面显示更加整洁,提升用户阅读体验,还是为了生成更利于SEO的URL,移除字符串中不必要的标点符号或多余的空格都是一项非常实用的技能。安企CMS强大的模板引擎提供了丰富的过滤器来帮助我们实现这些目标,其中,`cut`过滤器就是一项简单却异常高效的工具。 ### `cut`过滤器

2025-11-08