除了`stampToDate`,还有哪些过滤器可以将时间值格式化为指定日期格式?

📅 👁️ 58

在安企CMS的模板开发中,我们经常需要将数据库中存储的时间值,比如文章的发布时间、更新时间,以我们期望的日期和时间格式展示出来。stampToDate过滤器无疑是其中最常用且功能强大的工具,它能将Unix时间戳灵活地转换为各种日期格式。但除了这个‘万金油’,安企CMS还提供了其他几种同样高效、实用的时间格式化方法,它们在不同场景下各有所长,能够帮助我们更精细、更便捷地处理时间数据的展示。


stampToDate:时间戳转换的基础与万能之选

首先,让我们再次确认stampToDate的功能,因为它是处理数据库中常见10位Unix时间戳的核心工具。无论你在archiveListarchiveDetailcommentList等标签中获取到CreatedTimeUpdatedTime这类时间戳字段,stampToDate都能将其转化为易读的日期时间格式。

它的使用方式非常直观,接受两个参数:需要格式化的时间戳值,以及一个定义输出格式的字符串。

{# 假设 publishStamp 是一个10位的时间戳,例如 1609470335 #}
{% set publishStamp = 1609470335 %}

{# 格式化为 2021年06月30日 #}
<div>发布日期:{{stampToDate(publishStamp, "2006年01月02日")}}</div>
{# 格式化为 2021-06-30 15:04:05 #}
<div>发布时间:{{stampToDate(publishStamp, "2006-01-02 15:04:05")}}</div>

这个过滤器是处理数据库返回时间戳时的首选,其灵活性在于可以自定义输出的任何格式。


标签内直接定义格式:快捷与便利的选择

对于像文章发布时间(CreatedTime)和更新时间(UpdatedTime)这类在archiveDetailarchiveList标签中经常需要显示的时间字段,安企CMS提供了一种更便捷的格式化方式:直接在标签内部通过format参数来指定。

这种方法省去了额外调用stampToDate的步骤,让模板代码更加简洁易读。

{# 在文档详情页,直接获取并格式化文章创建时间 #}
<div>
    文章发布于:{% archiveDetail with name="CreatedTime" format="2006年01月02日 15:04" %}
</div>

{# 在文档列表中,同样可以为每个文章项格式化时间 #}
{% archiveList archives with type="list" limit="5" %}
    {% for item in archives %}
        <div>
            {{item.Title}} - 发布于:{{item.CreatedTime|format("2006-01-02")}}
        </div>
    {% endfor %}
{% endarchiveList %}

可以看到,当你在archiveListarchiveDetail中直接访问item.CreatedTimeitem.UpdatedTime时,如果配合format过滤器,它会自动进行格式化,效果与stampToDate相同。这在很多场景下都能提升开发效率。


{% now %} 标签:获取当前时间的利器

有时,我们需要的不是数据库中的某个时间,而是显示网页渲染时的服务器当前时间,例如在页脚显示当前的年份或精确到秒的时间。这时,{% now %}标签就派上用场了。

它不依赖任何外部变量,只负责获取并格式化服务器的实时时间。

{# 在页脚显示当前年份 #}
<div>&copy; {% now "2006" %} All Rights Reserved.</div>

{# 显示完整的当前日期和时间 #}
<div>当前服务器时间:{% now "2006-01-02 15:04:05" %}</div>

这个标签对于需要动态展示当前时间的场景非常实用。


|date (或 |time) 过滤器:针对特定数据类型

除了上述几种方式,安企CMS还提供了|date(或其别名|time)过滤器。这个过滤器与stampToDate略有不同,它要求被过滤的对象本身就是一个Go语言的time.Time类型对象,而不是一个纯粹的Unix时间戳。

如果你在模板中操作的是一个已经解析为Go语言time.Time类型的变量(例如,某些自定义的Go结构体或通过其他方式转换后的时间对象),那么|date过滤器就非常适用。

{# 假设 myGoTimeVar 是一个已知的Go time.Time类型变量 #}
<div>自定义时间:{{ myGoTimeVar|date:"2006年01月02日 星期一" }}</div>

{# myGoTimeVar|time 和 myGoTimeVar|date 效果一致 #}
<div>自定义时间:{{ myGoTimeVar|time:"2006/01/02 15:04" }}</div>

虽然在大多数直接从数据库获取时间戳的场景中,stampToDate更常用,但了解|date|time的存在,可以帮助你在处理预先处理过的Go时间对象时,选择更精准的工具。


格式化字符串的奥秘:Go语言的时间布局

不论是stampToDate过滤器、标签内format参数,还是{% now %}标签和|date过滤器,它们都遵循同一个时间格式化规则:Go语言的参考时间布局。

Go语言没有像PHP那样使用”Y-m-d”或Java那样使用”yyyy-MM-dd”的格式符,而是使用一个特定的参考日期2006-01-02 15:04:05.999999999 -0700 MST(通常简写为2006-01-02 15:04:05)来作为格式化的模板。

这意味着,你需要根据你想要显示的日期/时间部分,在格式字符串中对应地写出参考日期/时间中的相应部分:

  • 年份2006
  • 月份01 (带前导零), 1 (不带前导零), Jan (缩写), January (完整)
  • 日期02 (带

相关文章

如何在文章列表页结合自定义参数(如“区域”、“户型”)进行多条件筛选?

在安企CMS中,要在文章列表页实现多条件筛选,例如根据“区域”、“户型”等自定义参数进行筛选,这需要我们巧妙地结合系统提供的“内容模型”功能,以及前端模板的“文档参数筛选标签”(`archiveFilters`)和“文档列表标签”(`archiveList`)。整个过程可以分为几个核心步骤,让我们一起来详细了解。 ### 核心功能:自定义内容模型与参数 实现多条件筛选的基础

2025-11-08

如何在文章列表页面实现通过URL参数(如`q=关键词`)进行搜索并显示结果?

在网站内容运营中,为用户提供便捷、精准的内容查找体验至关重要。当网站文章数量不断增长时,一个实用的搜索功能能够极大地提升用户满意度和内容触达效率。AnqiCMS作为一款高效的内容管理系统,提供了灵活的方式来实现文章列表页面的URL参数搜索功能,让访客通过在URL中附加`q=关键词`等参数,就能直接检索并查看相关内容。 本文将详细介绍如何在AnqiCMS中配置此功能,帮助您优化网站内容检索

2025-11-08

如何在页面标题(Title)中动态地添加网站名称后缀或自定义分隔符?

网页标题(Title)是网站在搜索引擎结果页面的“门面”,它不仅能直观地告诉用户页面内容,也是搜索引擎评估页面相关性和权威性的重要指标。一个优化得当的页面标题,能够显著提升点击率和网站的搜索引擎排名。在 AnQiCMS 中,您可以非常灵活地控制页面标题的生成方式,尤其是动态添加网站名称后缀和自定义分隔符,以实现统一的品牌形象和更好的 SEO 效果。 ### AnQiCMS 中的 TDK

2025-11-08

如何对文章列表进行分页显示,并自定义分页导航的样式和页码数量?

在网站内容日益丰富的今天,如何高效地展示大量文章,同时确保用户浏览体验的流畅性,是每一个网站运营者需要思考的问题。安企CMS(AnQiCMS)提供了强大且灵活的文章列表分页功能,不仅能帮助网站优化内容呈现,还能通过自定义样式和页码数量,更好地融入网站整体设计,提升用户交互体验。 接下来,我们将深入探讨如何在安企CMS中实现文章列表的分页显示

2025-11-08

如何使用过滤器截取文章描述或摘要的指定字符长度,并自动添加省略号?

在网站运营中,文章描述或摘要的呈现方式对于用户体验和搜索引擎优化(SEO)都至关重要。一个长度适中、内容精炼的摘要,不仅能吸引访客点击,还能帮助搜索引擎更好地理解页面内容。然而,手动控制每篇文章摘要的长度既耗时又容易出错。幸运的是,AnqiCMS 提供了强大的模板过滤器功能,能够帮助我们自动化这一过程,确保网站内容展示的统一性和美观性。 ### 为什么需要截取文章描述或摘要

2025-11-08

如何在模板中将数字或字符串进行加法运算或其他算术操作?

在网站模板开发中,我们常常需要对数据进行一些基本的算术运算,例如计算总和、调整数值或者根据特定条件进行数值比较。安企CMS(AnQiCMS)凭借其基于Go语言的高效架构和借鉴Django风格的灵活模板引擎,为用户提供了直观且功能强大的方式来实现在模板中进行数字或字符串的加法及其他算术操作。 安企CMS的模板语法设计,使得技术信息能够以易于理解的方式呈现在模板中,无需复杂的后端代码

2025-11-08

如何为可能为空的变量、字符串或对象设置默认显示值?

在网站内容管理中,数据的完整性和一致性是至关重要的。然而,在实际运营中,我们经常会遇到某些变量、字符串或对象可能为空的情况。如果模板没有对这些空值进行恰当的处理,前端页面就可能出现空白、错乱甚至报错,严重影响用户体验。安企CMS(AnQiCMS)提供了多种灵活而强大的模板标签和过滤器,帮助我们优雅地处理这些潜在的空值,确保网站内容的稳定和美观。 安企CMS的模板系统借鉴了Django的语法

2025-11-08

如何使用过滤器移除字符串开头/结尾或任意位置的特定字符(如空格)?

安企CMS中字符串清理实用指南:高效移除特定字符的过滤器应用 在运营网站的过程中,我们经常会遇到需要对字符串数据进行清理和格式化的情况。无论是用户输入时多敲的空格,还是从外部导入内容时携带的冗余字符,这些细微之处都可能影响网站内容的整洁度和用户体验。安企CMS(AnQiCMS)提供了多功能且易于使用的模板过滤器,能够帮助我们轻松应对这些字符串清理的需求。 本文将深入探讨如何利用 `trim`

2025-11-08