`date`和`time`过滤器如何将`time.Time`类型的时间值按照指定格式进行显示?

📅 👁️ 66

在安企CMS的模板设计中,灵活地展示日期和时间是内容呈现的关键一环。为了满足这种精细化的需求,安企CMS提供了一系列实用的时间处理工具,其中datetime过滤器便是针对time.Time类型时间值进行格式化显示的重要功能。

理解 time.Time 类型与过滤器基础

在深入了解datetime过滤器之前,我们需要明确一个前提:这两个过滤器专门用于处理Go语言中的time.Time类型数据。安企CMS基于Go语言开发,其内部处理的时间数据通常就是time.Time对象。如果您在模板中遇到的是一个已经为time.Time类型的时间变量,那么datetime过滤器将是您的首选。

这两个过滤器的核心作用,是将一个标准的time.Time对象,按照您指定的格式字符串,转换为易于阅读的文本形式。值得一提的是,time过滤器实际上是date过滤器的一个别名,它们的功能和用法是完全相同的,您可以根据个人喜好选择使用。

掌握Go语言的时间格式化规则

不同于许多编程语言使用诸如Y-m-d H:i:s这样的占位符来定义时间格式,Go语言采用了一种独特的“参考时间”模式。这个参考时间是固定的:“2006年01月02日 15点04分05秒”。您需要将您期望的输出格式,与这个参考时间中的对应元素进行匹配。例如,如果您想显示年份,就写“2006”;想显示月份,就写“01”;想显示小时,就写“15”。

下面是一些常用格式化规则示例:

  • 年份: 2006 (四位数年份), 06 (两位数年份)
  • 月份: 01 (两位数月份), Jan (缩写月份名,如Jan), January (完整月份名)
  • 日期: 02 (两位数日期)
  • 星期: Mon (缩写星期名), Monday (完整星期名)
  • 小时 (24小时制): 15
  • 小时 (12小时制): 03, PM (上午/下午标记)
  • 分钟: 04
  • 秒: 05
  • 毫秒/微秒/纳秒: .000, .000000, .000000000

datetime过滤器的使用方法

无论您选择date还是time,其基本语法模式都是一致的:

{{ 您的时间变量 | date:"您的格式化字符串" }}

或者

{{ 您的时间变量 | time:"您的格式化字符串" }}

假设您有一个模板变量article.PublishDate,它是一个time.Time类型的值,您可以这样来显示它:

仅显示日期(例如:2023-10-27):

{{ article.PublishDate | date:"2006-01-02" }}

仅显示时间(例如:14:35:00):

{{ article.PublishDate | time:"15:04:05" }}

显示完整日期和时间(例如:2023年10月27日 下午02点35分):

{{ article.PublishDate | date:"2006年01月02日 下午03点04分" }}

显示英文日期格式(例如:Oct 27, 2023):

{{ article.PublishDate | date:"Jan 02, 2006" }}

通过灵活组合这些格式化元素,您几乎可以实现任何所需的日期和时间显示样式。

stampToDate标签的区别

在安企CMS中,除了datetime过滤器,您可能还会遇到stampToDate这个标签。理解它们之间的区别至关重要:

  • date / time 过滤器: 专门用于格式化 Go语言的time.Time类型 的变量。
  • stampToDate 标签: 专门用于格式化 10位Unix时间戳 (即自1970年1月1日00:00:00 UTC以来的秒数)。例如,文章的CreatedTimeUpdatedTime字段通常是以Unix时间戳的形式存储的,这时就需要使用stampToDate

例如,在获取文档列表时,文档的创建时间item.CreatedTime是一个Unix时间戳,您会看到如下用法:

<span>{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>

而如果您有一个从其他渠道获取的,并被确保是time.Time类型的变量,如customEvent.EventStartTime,那么就可以使用date过滤器:

<span>活动开始时间:{{ customEvent.EventStartTime | date:"2006年01月02日 15:04" }}</span>

正确区分这两种时间值类型并选择对应的处理方式,可以确保模板的正常运行和预期的时间显示。

总结

datetime过滤器为安企CMS的模板提供了强大而灵活的时间格式化能力。通过理解它们处理time.Time类型数据的前提,并掌握Go语言独特的“参考时间”格式化规则,您可以轻松地将网站上的时间信息以各种用户友好的方式呈现。同时,请注意区分time.Time对象与Unix时间戳,并合理运用stampToDate标签来处理不同类型的时间数据。


常见问题 (FAQ)

Q1: 为什么我的时间值使用了date过滤器后,页面上不显示或者报错? A1: 这很可能是因为您尝试格式化的变量并非Go语言的time.Time类型,而是10位Unix时间戳。date过滤器严格要求输入是`time.

相关文章

`cut`过滤器在安企CMS模板中,如何移除字符串中任意位置的指定字符?

在网站内容运营中,我们经常需要对字符串进行处理,例如清理多余的字符,或者标准化显示内容。安企CMS(AnQiCMS)模板引擎提供了一系列强大的过滤器来帮助我们完成这些任务,其中,`cut`过滤器就是一个非常实用的工具,专门用于从字符串的任何位置移除特定的字符。 ### 理解 `cut` 过滤器的工作原理 `cut`过滤器在安企CMS模板中的作用非常直接

2025-11-08

如何使用`count`过滤器计算某个关键词在字符串或数组中出现的次数?

在网站内容运营中,我们经常需要了解某些特定关键词在文章、产品描述等文本中出现的频率。这对于SEO优化、内容质量分析、甚至仅仅是数据统计都非常有价值。安企CMS提供了强大而灵活的模板系统,其中就包含了一个非常实用的 `count` 过滤器,能够帮助我们轻松实现这一目标。 ### 理解 `count` 过滤器 简单来说,`count`

2025-11-08

`contain`过滤器在安企CMS模板中,如何判断字符串或数组是否包含某个关键词?

在安企CMS的模板开发中,我们经常需要根据数据的不同特性来动态调整页面的展示方式。其中,判断字符串或数组中是否包含某个关键词或元素,是一个非常基础但又极其常用的需求。此时,`contain` 过滤器便成为了我们手中的一把利器,它能帮助我们轻松实现这一目标。 `contain` 过滤器主要用于检查一个变量(无论是字符串、数组,还是键值对和结构体)中是否存在某个特定的内容。它的结果会是一个布尔值

2025-11-08

`center`、`ljust`、`rjust`过滤器如何将字符串按照指定长度居中、靠左或靠右显示?

在网站内容的呈现中,文本的格式和对齐方式往往直接影响着读者的阅读体验。尤其是在制作安企CMS(AnQiCMS)的模板时,我们经常会遇到需要将标题、短语或数据列表按照特定长度进行居中、靠左或靠右对齐的需求。虽然多数布局依赖CSS样式,但在某些场景下,利用模板内置的字符串过滤器能更灵活、高效地实现这些细致的文本排版。 安企CMS的模板引擎提供了几个非常实用的字符串过滤器,它们分别是

2025-11-08

`default`和`default_if_none`过滤器在变量为空或`nil`时,如何设置默认值以避免显示空白?

在日常的网站内容管理中,我们经常会遇到这样的情况:某些变量可能因为内容未填写、数据缺失或其他原因而为空(或者在编程术语中为`nil`)。如果不加以处理,这些变量在前端页面上可能会显示为空白区域,这不仅影响页面的美观度,也可能让访问者感到困惑,降低网站的专业性。安企CMS(AnQiCMS)深知这一痛点

2025-11-08

`divisibleby`过滤器如何判断一个数字是否可以被另一个数字整除,常用于哪些条件判断?

安企CMS(AnQiCMS)的模板引擎为网站内容的动态展示提供了强大而灵活的工具。其中,`divisibleby`过滤器是一个虽小巧却能有效提升模板逻辑性的功能,它主要用于判断一个数值是否可以被另一个数值整除。理解并善用这个过滤器,可以帮助我们在内容呈现和页面布局上实现更多智能化的效果。 ### `divisibleby`过滤器的核心功能

2025-11-08

`dump`过滤器在模板开发过程中,如何用于调试和查看变量的结构类型和值?

在安企CMS模板开发过程中,我们经常需要处理各种动态数据。这些数据可能来自数据库、系统配置或用户的输入,它们以变量的形式传递到模板中供我们展示。然而,有时页面显示的结果并非我们所预期的——某个字段为空,数据格式不对,或者一个集合中包含的元素并非预想的那样。在这种情况下,高效地“查看”变量内部的结构、类型和具体值,就成了排查问题、加快开发进度的关键

2025-11-08

`escape`、`e`和`escapejs`过滤器在输出HTML或JavaScript代码时,分别提供哪些安全转义功能?

在网站运营中,输出内容的安全性是至关重要的。特别是在展示用户提交的数据或从外部源获取的信息时,如果不进行适当处理,网站很容易受到跨站脚本攻击(XSS)等威胁。AnQiCMS作为一款注重安全性的内容管理系统,在模板渲染层面提供了强大的安全转义机制,其中`escape`、`e`和`escapejs`这三个过滤器便是保障输出安全的关键工具。 AnQiCMS的模板引擎在设计上借鉴了Django

2025-11-08