dede strftime 定义

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 DEDE建站 正文

strftime 是什么?

strftime 是一个源自 C 语言库的时间格式化函数,被 PHP 等多种编程语言所采纳,它的全称是 "String Format Time"(字符串格式化时间)。

dede strftime 定义
(图片来源网络,侵删)

在 DedeCMS 中,它被封装成一个可以在模板中直接使用的全局函数,通常写作 strftime(){dede:strftime} 标签形式。

核心作用: 将一个 Unix 时间戳(或一个格式化的时间字符串)转换为你所需要的、任意格式的时间日期字符串。


strftime 的基本语法

在 DedeCMS 模板中,主要有两种使用方式:

作为普通函数使用(最常见)

这是最简单、最直接的使用方式,通常用于简单的日期显示。

dede strftime 定义
(图片来源网络,侵删)
{dede:field function='strftime("格式化字符串", @me)'/}

参数解析:

  1. "格式化字符串": 这是必需的参数,它定义了你希望输出的时间日期格式,里面包含各种格式化字符(见下文列表)。
  2. @me: 这是 DedeCMS 模板中的特殊变量,代表当前正在处理的数据,对于时间字段,@me 通常就是该字段的 Unix 时间戳,DedeCMS 的 strftime 函数会自动将其识别为时间戳进行处理,所以这个 @me 是必须的。

示例:

假设文章的发布时间 pubdate 字段存储的时间戳是 1672531200 (对应 2025-01-01 00:00:00)。

  • 显示 YYYY-MM-DD 格式:

    dede strftime 定义
    (图片来源网络,侵删)
    {dede:field.pubdate function='strftime("%Y-%m-%d", @me)'/}
    <!-- 输出: 2025-01-01 -->
  • 显示 YYYY年MM月DD日 格式:

    {dede:field.pubdate function='strftime("%Y年%m月%d日", @me)'/}
    <!-- 输出: 2025年01月01日 -->
  • 显示完整的日期和时间:

    {dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S", @me)'/}
    <!-- 输出: 2025-01-01 00:00:00 -->

作为 dede 标签使用

这种方式通常用在循环标签(如 {dede:arclist})中,用于对列表中的每个条目进行时间格式化。

{dede:arclist titlelen='30' orderby='pubdate'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function='strftime("%Y-%m-%d", @me)'/]</span>
    </li>
{/dede:arclist}

[field:pubdate function='strftime("%Y-%m-%d", @me)'/] 的作用和第一种方式完全一样,只是写法上嵌套在了 arclist 标签内部。


常用格式化字符 (占位符)

strftime 的强大之处在于其丰富的格式化字符,以下是最常用的一些:

格式字符 说明 示例 (2025-10-27 15:30:45)
%Y 4位数的年份 (Year) 2025
%y 2位数的年份 (Year) 23
%m 2位数的月份 (Month) 10
%d 2位数的日期 (Day) 27
%H 24小时制的小时 (Hour) 15
%h 12小时制的小时 (Hour) 03
%i 12小时制的小时,带前导零 (Hour) 03
%M 分钟 (Minute) 30
%S 秒 (Second) 45
%A 完整的星期名称 (e.g., Friday) 星期五
%a 缩写的星期名称 (e.g., Fri) 周五
%B 完整的月份名称 (e.g., October) 十月
%b 缩写的月份名称 (e.g., Oct) 10月
%w 数字表示的星期 (0是星期日, 6是星期六) 5
%W 一年中的第几周(从周一开始) 43

组合使用示例:

  • "%Y年%m月%d日 %H:%M" -> 2025年10月27日 15:30
  • "%m/%d/%Y" -> 10/27/2025
  • "%b %d, %Y" -> 10月27, 2025
  • 发布于 %Y-%m-%d %A" -> 发布于 2025-10-27 星期五

MyDate 函数的区别

在 DedeCMS 中,你还会遇到另一个时间格式化函数 MyDate,它们功能相似,但有一些细微差别:

特性 strftime MyDate
来源 标准 C/PHP 函数,DedeCMS 封装 DedeCMS 自定义函数
主要参数 格式化字符串, 时间戳 格式化字符串, 时间戳
国际化支持 支持,可以根据服务器环境设置不同的语言,显示星期、月份的本地化名称。 不支持,星期和月份名称固定为中文(如“星期五”、“十月”)。
字符集 依赖于 PHP 环境的 setlocale() 设置。 不依赖,直接输出中文。

如何选择?

  • 使用 strftime

    • 当你需要显示英文或其他语言的日期时。
    • 当你希望日期格式完全遵循标准规范时。
    • 在绝大多数情况下,strftime 是更优、更标准的选择。
  • 使用 MyDate

    • 当你只需要简单的中文日期格式,并且不希望受服务器 setlocale 设置影响时。
    • 在一些非常老的 DedeCMS 版本或特定模板中可能更常见。

示例对比:

假设服务器环境设置为中文。

  • strftime("%A", @me) -> 星期五
  • MyDate("Y-m-d A", @me) -> 2025-10-27 下午

如果服务器环境设置为英文 (en_US):

  • strftime("%A", @me) -> Friday
  • MyDate("Y-m-d A", @me) -> 仍然是 2025-10-27 下午 (不受影响)

特性 描述
定义 DedeCMS 中用于格式化时间日期的核心函数。
作用 将 Unix 时间戳转换为自定义格式的日期字符串。
标准用法 {dede:field.时间字段 function='strftime("格式", @me)'/}
核心 熟练掌握各种格式化字符(如 %Y, %m, %d, %H 等)是关键。
推荐 优先使用 strftime,因为它更标准、更灵活,支持国际化。

掌握了 strftime,你就可以在 DedeCMS 模板中随心所欲地控制任何日期时间的显示样式,是模板开发必备的技能。

-- 展开阅读全文 --
头像
织梦广告JS调用代码如何正确使用?
« 上一篇 2025-12-27
c语言switch case语句
下一篇 » 2025-12-27

相关文章

取消
微信二维码
支付宝二维码

目录[+]