跳至内容

date_format

此格式将日期和时间格式化为给定的 strftime() 格式。日期可以以 Unix 时间戳DateTime 对象、MySQL 时间戳或由 PHP 的 strtotime() 可解析的任何由月份、日期、年份组成的字符串传递给 Smarty。然后,设计人员可以使用 date_format 完全控制日期的格式化。如果传递给 date_format 的日期为空并且传递第二个参数,第二个参数将用作要格式化的日期。

基本用法

{$myVar|date_format:"%Y-%m-%d"}

参数

参数位置 类型 必需 默认值 说明
1 字符串 %b %e, %Y 这是输出日期的格式。
2 字符串 不可用 如果输入为空,这是默认日期。

注意

从 Smarty-2.6.10 开始,传递给 date_format 的数值始终(除了 MySQL 时间戳,见下文)解释为 UNIX 时间戳。

在 Smarty-2.6.10 之前,strtotime() 可以解析的数字字符串(比如 YYYYMMDD)在某些情况下(取决于 strtotime() 的底层实现)会被解释为日期字符串,而不是时间戳。

唯一的例外是 mysql 时间戳:它们也是纯数字的,并且长度为 14 个字符(YYYYMMDDHHMMSS),mysql 时间戳优先于 unix 时间戳。

注意

date_format 本质上是对 PHP 的 strftime() 函数的包装器。你可以使用更多的转换说明符或更少的转换说明符,具体取决于编译 PHP 时你系统的 strftime() 函数。查看你系统的帮助手册,获取有效说明符的完整列表。但是,Windows 上模拟了一些说明符。这些是: %D、%e、%h、%l、%n、%r、%R、%t、%T。

示例

<?php

$config['date'] = '%I:%M %p';
$config['time'] = '%H:%M:%S';
$smarty->assign('config', $config);
$smarty->assign('yesterday', strtotime('-1 day'));

该模板使用 $smarty.now 获取当前时间

{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
{$smarty.now|date_format:$config.date}
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:$config.time}

上面的转换将输出

Jan 1, 2022
01/01/22
02:33 pm
Dec 31, 2021
Monday, December 1, 2021
14:33:00

转换说明符

date_format 转换说明符

  • %a - 根据当前语言环境简写星期名称
  • %A - 根据当前语言环境完整星期名称
  • %b - 根据当前语言环境简写月份名称
  • %B - 根据当前语言环境完整月份名称
  • %c - 当前语言环境首选的日期和时间表示
  • %C - 世纪数(年份除以 100 并截断为整数,范围为 00 到 99)
  • %d - 月份中的某天,表示为十进制数(范围 01 到 31)
  • %D - 与 %m/%d/%y 相同
  • %e - 月份中的某天,表示为十进制数,个位数字前加一个空格(范围 1 到 31)
  • %g - 一世纪中的第几周 [00,99]
  • %G - 一年中第几周,包括世纪 [0000,9999]
  • %h - 与 %b 相同
  • %H - 使用 24 小时制表示的小时,表示为十进制数(范围 00 到 23)
  • %I - 使用 12 小时制表示的小时,表示为十进制数(范围 01 到 12)
  • %j - 一年中的第几天,表示为十进制数(范围 001 到 366)
  • %k - 小时(24 小时制),个位数字前加一个空格。(范围 0 到 23)
  • %l - 使用 12 小时制表示的小时,表示为十进制数,个位数字前加一个空格(范围 1 到 12)
  • %m - 月份,表示为十进制数(范围 01 到 12)
  • %M - 分钟,表示为十进制数
  • %n - 换行符
  • %p - 根据给定的时间值,可能是“am”或“pm”,也可以是当前语言环境的对应字符串
  • %r - 上午和下午表示的时间
  • %R - 24 小时制表示的时间
  • %S - 秒,表示为十进制数
  • %t - 制表符
  • %T - 当前时间,等于 %H:%M:%S
  • %u - 星期几,表示为十进制数 [1,7],其中 1 表示星期一
  • %U - 当前年份的星期数,十进制数字,从第一周的第一个星期天开始
  • %V - 当前年份的 ISO 8601:1988 星期数,十进制数字,范围为 01 到 53,其中第 1 周为当前年中包含至少 4 天的第一周,星期一为一周的第一天。
  • %w - 星期几的十进制数,星期天为 0
  • %W - 当前年份的星期数,十进制数字,从第一周的第一个星期一开始
  • %x - 当前语言环境的首选日期表示形式,不带时间
  • %X - 当前语言环境的首选时间表示形式,不带日期
  • %y - 不含世纪的年份十进制数(范围为 00 到 99)
  • %Y - 包含世纪的年份十进制数
  • %Z - 时区或名称或缩写
  • %% - 一个文字 '%' 字符

另请参见 $smarty.nowstrftime(){html_select_date}日期提示 页面。