如何在模板中格式化并显示时间戳为可读日期或时间?

📅 👁️ 67

在安企CMS的日常运营中,我们经常需要处理各种数据,其中时间信息无疑是最常见也最重要的一类。无论是文章的发布日期、更新时间,还是用户评论的具体时刻,这些时间数据通常以时间戳的形式存储。然而,原始的时间戳对于普通用户来说并不直观,它们更像一串无意义的数字。这时,将这些时间戳转换为易于理解的日期或时间格式,就显得尤为关键。

安企CMS的模板系统,采用了类似Django模板引擎的语法,为我们提供了强大的灵活性来控制内容的展示。其中,处理时间戳的利器就是内置的stampToDate标签,它能帮助我们轻松地将后台获取的10位时间戳转换为各种可读的日期和时间格式。

理解时间戳与安企CMS中的时间数据

在安企CMS中,你可能会在多个地方遇到时间戳。例如,当你使用archiveDetail标签获取文章详情,或者archiveList标签获取文章列表时,CreatedTime(创建时间)和UpdatedTime(更新时间)字段默认返回的都是10位的时间戳。同样,在commentList标签中获取评论的CreatedTime,或者通过userDetail标签获取用户的LastLogin(最近登录时间)和ExpireTime(VIP过期时间)时,也都会得到时间戳。

这些时间戳通常是自Unix纪元(1970年1月1日00:00:00 UTC)以来经过的秒数。虽然机器读取方便,但对人眼来说,1675910400这样的数字远不如2023年02月09日今天上午10:30来得直观。

stampToDate标签:时间格式化的魔法

为了将这些时间戳转化为我们熟悉的格式,安企CMS提供了{{stampToDate(时间戳, "格式")}}这样的用法。这里的关键在于第二个参数——“格式”字符串。安企CMS(基于Go语言开发)的时间格式化遵循Go语言自身的独特规则,它不是我们常见的Y-m-d H:i:s,而是使用2006-01-02 15:04:05这个固定的参考时间来定义格式。

这看起来有些奇特,但一旦掌握了其中的规律,就会发现它非常直观:

  • 2006 代表年份(YYYY)
  • 01 代表月份(MM)
  • 02 代表日期(DD)
  • 15 代表24小时制的小时(HH)
  • 04 代表分钟(MM)
  • 05 代表秒(SS)
  • Mon 代表星期几的简写(如Mon、Tue)
  • Monday 代表星期几的全称
  • Jan 代表月份的简写(如Jan、Feb)
  • January 代表月份的全称
  • MST-0700 代表时区信息

您只需要将您希望显示的日期时间格式,替换掉2006-01-02 15:04:05中对应位置的数字或字母即可。

例如,如果您想将时间戳格式化为“2023年02月09日”: {{stampToDate(时间戳, "2006年01月02日")}}

如果需要显示为“2023/02/09 10:30”: {{stampToDate(时间戳, "2006/01/02 15:04")}}

或者更详细的“2023-02-09 星期四 10:30:00”: {{stampToDate(时间戳, "2006-01-02 星期一 15:04:05")}}

请记住,格式字符串中的每个数字和字母都有其特定的含义,必须严格按照2006-01-02 15:04:05这个“魔法数字”来构造。

在模板中实际应用

现在,让我们看看如何在实际的安企CMS模板中应用stampToDate标签。

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

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <article>
        <h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
        <p>
            发布于:<span>{{ stampToDate(item.CreatedTime, "2006年01月02日") }}</span>
            阅读量:<span>{{ item.Views }}</span>
        </p>
        <p>{{ item.Description|truncatechars:100 }}</p>
    </article>
    {% endfor %}
{% endarchiveList %}

在这个例子中,item.CreatedTime会输出原始的时间戳,而stampToDate(item.CreatedTime, "2006年01月02日")则将其转换成如“2023年02月09日”这样友好的格式。

再比如,在文章详情页,你可能需要显示更精确的发布和更新时间:

<article>
    <h1>{{ archive.Title }}</h1>
    <div class="meta-info">
        <span>发布时间:{{ stampToDate(archive.CreatedTime, "2006-01-02 15:04:05") }}</span>
        {% if archive.CreatedTime != archive.UpdatedTime %}
            <span>最后更新:{{ stampToDate(archive.UpdatedTime, "2006年01月02日 星期一 15点04分") }}</span>
        {% endif %}
        <span>浏览量:{{ archive.Views }}</span>
    </div>
    <div class="content">
        {{ archive.Content|safe }}
    </div>
</article>

这里,我们不仅格式化了发布时间,还通过判断CreatedTimeUpdatedTime是否不同来决定是否显示更新时间,并将其格式化为包含星期信息的中文样式。

格式化时间戳的小贴士

  • 保持统一性: 整个网站的时间显示格式最好保持一致,以提供良好的用户体验。
  • 考虑目标受众: 根据您网站的主要用户群体,选择最适合他们的日期和时间格式。例如,面向国际用户的网站可能需要更标准的YYYY-MM-DD格式,而中文用户则更习惯YYYY年MM月DD日
  • 测试是关键: 在不同浏览器和设备上测试您的时间显示,确保它们在任何情况下都能正确显示。
  • 查阅Go语言官方文档: 如果您需要更复杂或不常见的格式,可以查阅Go语言官方的time包文档,了解所有支持的格式化字符串,以定制出最符合您需求的显示方式。

掌握了stampToDate标签和Go语言的时间格式化规则,您就能轻松地将安企CMS中的时间戳数据,转化为用户喜爱、易于阅读的日期与时间,从而大大提升网站内容的专业性和用户友好度。


常见问题 (FAQ)

Q1: 我使用了{{stampToDate(item.CreatedTime, "YYYY-MM-DD")}},为什么显示结果是错的? A1: 这是因为安企CMS的时间格式化遵循Go语言的规则,它不使用YYYY-MM-DD这种常见的格式,而是使用2006-01-02作为参考。您应该将格式字符串修改为"2006-01-02"才能正确显示年-月-日。请务必参照2006-01-02 15:04:05这个固定值来构造您的格式字符串。

Q2: 除了文章的创建/更新时间,还有哪些地方需要使用stampToDate来格式化时间戳? A2: 您在评论列表(commentList标签的CreatedTime)、用户详情(userDetail标签的LastLoginExpireTime)等场景中获取到的时间数据,同样也是时间戳格式。在这些地方,都可以使用stampToDate标签进行格式化,以提供更友好的显示。

Q3: 如果我只想显示当前年份,模板代码应该怎么写? A3: 安企CMS提供了一个{% now "2006" %}标签可以直接获取当前年份。如果您想格式化一个已有的时间戳只显示年份,可以使用{{stampToDate(时间戳, "2006")}}。例如,{{stampToDate(item.CreatedTime, "2006")}}会显示文章的发布年份。

相关文章

如何实现多语言网站内容的切换显示?

在当今全球化的数字环境中,让网站支持多种语言显示,已经不再是一个可选项,而是许多企业和内容运营者拓展国际市场、提升用户体验的必备策略。安企CMS(AnQiCMS)在设计之初就充分考虑了这一点,内置了强大的多语言支持功能,帮助我们轻松实现网站内容在不同语言间的切换显示。 那么,具体该如何操作,才能让我们的安企CMS网站具备多语言内容切换的能力呢?这主要可以从系统语言包

2025-11-08

如何显示并管理图片和视频等多媒体资源的展示?

在网站运营中,高质量的多媒体内容是吸引访客、提升用户体验的关键。安企CMS(AnQiCMS)深谙此道,提供了全面的功能来帮助用户轻松管理和灵活展示网站上的图片和视频。从统一的资源库到智能的优化设置,AnQiCMS让多媒体管理变得高效而便捷。 ### 一、核心多媒体管理中心:图片资源管理 安企CMS将所有上传的图片和视频资源汇集到一个集中的“图片资源管理”模块中。这里不仅是您素材的存放地

2025-11-08

如何在网站前端显示单页面(如关于我们、联系我们)的内容?

在网站运营中,像“关于我们”、“联系我们”这样的单页面内容是不可或缺的,它们承载着展示企业形象、提供联系方式或声明服务条款等重要职能。对于使用AnQiCMS的朋友们来说,在网站前端优雅地展示这些单页面内容,其实是一件非常直接且灵活的事情。 ### 单页面内容管理概览 首先,我们需要在AnQiCMS的后台系统中创建并管理这些单页面。在后台左侧的导航栏中,您可以找到“页面资源”菜单

2025-11-07

安企CMS中如何显示自定义内容模型下的额外字段数据?

在安企CMS中,内容模型的灵活性是其项目的一大亮点,它允许我们根据业务的实际需求,创建和管理各式各样的内容结构。无论是文章、产品、活动,还是其他任何需要特定字段来描述的信息,都可以通过自定义内容模型轻松实现。当我们为这些模型添加了专属的额外字段后,下一步自然就是如何在网站前端将这些宝贵的数据准确、美观地展现出来。 这并不是一个复杂的任务,安企CMS提供了直观便捷的模板标签来完成

2025-11-07

安企CMS中如何进行内容列表的分页显示?

在安企CMS中,内容列表的分页显示是提升用户体验、优化网站性能以及方便内容管理的关键功能之一。安企CMS凭借其灵活的模板标签和强大的内容管理能力,为我们提供了简单而高效的方式来实现这一需求。 ### 内容列表分页显示的重要性 想象一下,如果您的网站有成千上万篇文章、产品或评论,而它们都显示在一个页面上,这不仅会让页面加载速度奇慢无比,还会让用户在浩瀚的信息中迷失方向

2025-11-08

如何在前端展示网站的友情链接列表?

在网站运营中,友情链接扮演着不可或缺的角色。它们不仅有助于提升网站的外部链接质量,改善搜索引擎优化(SEO)效果,还能为网站带来额外的流量,并通过同行推荐增加网站的信誉度。安企CMS深知友情链接的重要性,因此提供了直观便捷的管理功能,并支持灵活的前端展示方式,让网站管理员能够轻松地在页面上呈现这些重要的合作资源。 ### 一、安企CMS中的友情链接管理 在安企CMS的后台管理界面

2025-11-08

如何在留言或评论功能中显示验证码?

在网站运营中,留言和评论功能是与用户互动的重要渠道,但也常常成为垃圾信息和恶意灌水的重灾区。为了维护一个清净、高质量的交流环境,为这些互动功能添加验证码就显得尤为重要。安企CMS深知这一点,并为此提供了便捷的解决方案。 那么,如何在安企CMS的留言或评论功能中显示验证码,有效抵御垃圾信息呢?这主要分为两个核心步骤:首先在后台启用验证码功能,然后将验证码元素集成到前端模板中。 ### 第一步

2025-11-08

如何显示用户留言或文章评论列表,并处理审核状态?

在网站运营中,用户留言和文章评论是促进互动、提升内容价值的重要组成部分。对于安企CMS的用户来说,合理地展示这些用户生成内容,并有效地管理它们的审核状态,是确保网站内容质量和用户体验的关键。下面我们将详细探讨在安企CMS中如何实现这一目标。 ### 了解安企CMS中的评论与留言管理 安企CMS为用户提供了方便的内容评论和网站留言管理功能。在后台管理界面

2025-11-08