AnQiCMS模板中,如何将数据库中获取的10位时间戳格式化为自定义的日期时间格式?

📅 👁️ 72

在网站内容展示中,我们经常会遇到从数据库获取到的时间数据是一串长长的数字,比如 1678886400。这串数字,也就是我们常说的时间戳,对于计算机来说很方便,但对访问网站的用户而言,却显得冰冷又难以理解。好在,安企CMS为我们提供了一个非常便捷的功能,能够将这些原始的10位时间戳轻松转换为我们习惯阅读的日期和时间格式。

认识 stampToDate 格式化标签

安企CMS的模板引擎(它采用了类似Django模板引擎的语法)内置了一个名为 stampToDate 的标签,专门用于处理时间戳的格式化。它的使用方式非常直观,只需要提供两个参数:需要格式化的 10位时间戳 和你想要的 格式字符串

基本的语法结构是这样的:

{{stampToDate(你的时间戳变量, "格式字符串")}}

这里需要特别注意的,是那个“格式字符串”。它不是我们日常生活中习惯的 YYYY-MM-DD 这种形式,而是采用了一种Go语言特有的“参考时间”格式。别担心,这听起来有点专业,但实际上非常简单:你只需要记住 2006-01-02 15:04:05 这个特定的时间作为标准模板。通过替换这个标准时间中的年月日时分秒,你就可以定义出任何你想要的日期时间显示格式。

例如:

  • 如果你想显示 年-月-日,格式字符串就写 "2006-01-02"
  • 如果你想显示 年/月/日,格式字符串就写 "2006/01/02"
  • 如果你想显示 月-日 时:分,格式字符串就写 "01-02 15:04"
  • 如果你想显示 完整的 年月日时分秒,格式字符串就写 "2006-01-02 15:04:05"

记住,这个“2006-01-02 15:04:05”本身并不代表你会得到这个日期,它只是一个“模板”,系统会根据你提供的实际时间戳和这个模板的对应位置来生成最终的日期时间。

在模板中找到你的时间戳数据

在安企CMS的模板中,许多从数据库中取出的时间字段都默认是以10位时间戳的形式存在的。这些字段通常会带有 Time 后缀,例如:

  • 文章的创建时间: archive.CreatedTime
  • 文章的更新时间: archive.UpdatedTime
  • 评论的创建时间: item.CreatedTime (当你在循环评论列表时)
  • 以及其他类似 CreatedTimeUpdatedTime 的字段。

当你在使用 archiveDetailarchiveListcommentList 等标签获取数据时,这些时间戳字段会被包含在返回的对象中,可以直接通过 . 符号来访问。

将时间戳格式化为可读日期

现在,我们把 stampToDate 标签和实际的时间戳变量结合起来,看看如何在模板中应用:

假设我们正在显示一篇文档的详情页,需要展示其发布时间和更新时间:

<div class="article-meta">
    <p>
        发布于:{{stampToDate(archive.CreatedTime, "2006年01月02日 星期一")}}
    </p>
    <p>
        最近更新:{{stampToDate(archive.UpdatedTime, "2006/01/02 15:04:05")}}
    </p>
    <p>
        简短日期:{{stampToDate(archive.CreatedTime, "01-02")}}
    </p>
</div>

如果我们正在循环一个评论列表,想要显示每条评论的发布时间:

{% for comment in comments %}
    <div class="comment-item">
        <span class="comment-author">{{comment.UserName}}</span>
        <span class="comment-time">于 {{stampToDate(comment.CreatedTime, "2006年01月02日 15:04")}} 评论道:</span>
        <p class="comment-content">{{comment.Content}}</p>
    </div>
{% endfor %}

可以看到,无论是单个数据还是循环中的数据,只要你获取到了那个10位的时间戳变量,就可以灵活地使用 stampToDate 来进行格式化。这让你的网站内容看起来更加专业和用户友好。

通过 stampToDate 这个小巧而强大的标签,我们能轻松地将数据库中冰冷的时间戳转化为用户友好的日期和时间,大大提升网站内容的阅读体验。掌握了这个技巧,您就能让网站的每一个时间信息都变得生动起来。


常见问题 (FAQ)

1. 为什么我的时间戳格式化后显示错误或者空白? 这通常有几个原因:

  • 时间戳数据无效: 检查你传入 stampToDate 的变量是否确实是一个有效的10位时间戳。如果变量为空、0或者其他非数字,可能会导致显示错误。你可以尝试先用 {{你的时间戳变量}} 直接输出,确认它是否是期望的数字。
  • 格式字符串错误: Go语言的日期格式字符串非常严格,必须使用 2006-01-02 15:04:05 作为参考。任何细微的错误(比如年份写成 YYYY)都会导致格式化失败。请仔细对照文档中的参考格式。
  • 时间戳位数不正确: stampToDate 标签预期接收10位(秒级)时间戳。如果是13位(毫秒级)时间戳,你需要先将其除以1000。

2. 我能自定义格式,比如显示星期几或者上午/下午吗? 当然可以。Go语言的日期格式字符串非常强大,支持许多不同的格式化选项,包括星期几、上午/下午等。例如:

  • 显示星期几:"Mon Jan _2 15:04:05 2006" 中的 Mon 对应星期几的简写,Monday 对应星期几的全称。
  • 显示上午/下午:"3:04PM" 中的 PM 即可显示上午/下午。 您可以参考 tag-stampToDate.md 文档中提供的更多示例,尝试组合出你需要的格式。

3. 所有的时间字段都是10位时间戳吗?我怎么知道一个字段是不是时间戳? 在安企CMS中,通常命名带有 Time 后缀的字段(如 CreatedTime, UpdatedTime, LastLogin 等)都是以10位时间戳形式存储的。如果你不确定某个字段的具体数据类型,可以尝试在模板中使用 {{你的字段变量|dump}} 这个过滤器。它会输出该变量的详细类型和值,帮助你确认它是否是时间戳。如果 dump 结果显示为 int64 或类似的整数类型,并且数值看起来像时间戳,那么就可以使用 stampToDate 进行格式化。

相关文章

如何在AnQiCMS模板中为可能为空的变量设置一个默认的友好显示值?

在构建网站模板时,我们经常会遇到这样的情况:某个变量可能因为数据未录入、可选字段留空或特定业务逻辑而导致在模板中为空值。如果不对这些空变量进行处理,网站前端页面可能会出现空白区域、显示不友好的占位符甚至导致布局错乱,从而影响用户体验和网站的专业性。 幸运的是,AnQiCMS 为此提供了两种优雅且实用的方法,帮助我们在模板中为可能为空的变量设置一个默认的友好显示值,确保网站内容的完整性和美观性

2025-11-07

AnQiCMS模板中,`{{ obj|filter__name:param }}` 过滤器的正确使用语法是什么?

安企CMS(AnQiCMS)以其高效、灵活的特性,为内容运营提供了强大的支持。在日常内容展示中,我们常常需要对数据进行精细化的处理和格式化,以确保信息以**状态呈现给访问者。此时,模板中的“过滤器”就成为了我们不可或缺的利器。 今天,我们就来深入探讨安企CMS模板中过滤器的正确使用语法:`{{ obj|filter_name:param }}`。理解并掌握它

2025-11-07

在AnQiCMS模板中,如何快速删除字符串两端、左侧或右侧的空格或特定字符?

在内容管理中,我们经常会遇到字符串两端出现多余空格或不想要的特定字符的情况,这不仅影响内容的显示美观,有时还会对数据处理或搜索引擎优化(SEO)造成不必要的干扰。AnQiCMS 采用类似 Django 的模板引擎语法,为我们提供了简洁高效的过滤器(Filters)来轻松解决这些问题。本文将详细介绍如何在 AnQiCMS 模板中,快速删除字符串两端、左侧或右侧的空格或特定字符。 ###

2025-11-07

AnQiCMS模板如何实现将文章标题中每个单词的首字母都转换为大写?

在网站内容运营中,文章标题的规范化处理常常是提升网站专业度和用户体验的关键一环。一个整洁、一致的标题格式不仅让内容更具吸引力,也有助于提高网站的整体形象。AnqiCMS 为我们提供了一个非常简洁高效的解决方案,只需通过模板中的一个简单过滤器,就能轻松实现文章标题中每个单词首字母大写。 ### 轻松实现标题首字母大写:`title` 过滤器 AnqiCMS 模板引擎借鉴了 Django

2025-11-07

AnQiCMS的 `date` 和 `stampToDate` 过滤器在处理时间数据时有哪些主要区别?

在AnQiCMS的模板开发中,时间数据的展示是不可或缺的一部分,无论是文章的发布时间、产品的更新日期,还是用户行为的时间记录,都需要以清晰可读的方式呈现在用户面前。为了满足不同的时间处理需求,AnQiCMS提供了两个核心的过滤器:`date` 和 `stampToDate`。虽然它们都能帮助我们格式化时间,但在底层处理的数据类型上有着根本的区别,理解这些差异对于避免模板错误和高效开发至关重要

2025-11-07

在AnQiCMS模板中,如何将产品价格(浮点数)始终保留两位小数显示?

在运营产品展示型网站时,你可能经常遇到需要精确显示产品价格的情况。一个专业且用户友好的网站,往往需要统一商品价格的显示格式,例如始终保留两位小数,即使是整数价格也自动补齐为 `.00`。AnQiCMS 以其灵活的模板系统,让这些细节处理变得非常便捷。 ### 理解 AnQiCMS 模板中的数据与显示 AnQiCMS 的模板系统基于 Go 语言,但其语法风格与 Django 模板引擎非常相似

2025-11-07

AnQiCMS如何自动识别文本中的URL或邮箱地址并将其转换为可点击的超链接?

在日常的网站运营中,我们经常需要在文章内容里添加各种链接,比如指向外部资源的网址,或者方便读者联系的邮箱地址。手动逐一添加超链接不仅效率低下,还容易出错。幸运的是,AnQiCMS 提供了非常实用的功能,能够智能地识别文本中的 URL 和邮箱地址,并自动将它们转换为可点击的超链接,大大提升了内容编辑的效率和用户体验。 在使用 AnQiCMS 时,您会发现系统为内容的自动化处理提供了多重保障

2025-11-07

使用AnQiCMS `urlizetrunc` 过滤器时,如何控制超链接文本的截断长度?

在网站内容运营中,我们经常需要在文章、评论或列表页展示各种超链接。这些链接可能是指向站内其他内容、外部资源,或者是用户的联系邮箱。然而,一些过长的链接不仅可能破坏页面布局,影响美观,还可能降低用户阅读体验。尤其是在有限的展示空间里,冗长的 URL 会让内容显得杂乱无章。 幸运的是,AnQiCMS 提供了一个非常实用的模板过滤器 `urlizetrunc`

2025-11-07