date_format
date_format 用于将日期和时间格式化为给定的 strftime() 格式。日期可以作为 Unix 时间戳、DateTime 对象、MySQL 时间戳或任何可由 PHP 的 strtotime() 解析的字符串传递给 Smarty。设计者可以使用 date_format 来完全控制日期的格式化。如果传递给 date_format 的日期为空,并且传递了第二个参数,则该参数将用作要格式化的日期。
基本用法
{$myVar|date_format:"%Y-%m-%d"}
参数
| 参数位置 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
| 1 | 字符串 | 否 | %b %e, %Y | 输出日期的格式。 |
| 2 | 字符串 | 否 | n/a | 如果输入为空,则使用此默认日期。 |
注意
自 Smarty-2.6.10 起,传递给
date_format的数字值始终被解释为 Unix 时间戳(除了 MySQL 时间戳,参见下文)。在 Smarty-2.6.10 之前,也可以将可由
strtotime()在 PHP 中解析的数字字符串(如YYYYMMDD)解释为日期字符串,而不是时间戳。这取决于strtotime()的底层实现。唯一的例外是 MySQL 时间戳:它们也是仅数字的,长度为 14 位的字符串(
YYYYMMDDHHMMSS),MySQL 时间戳优先于 Unix 时间戳。注意
date_format本质上是 PHP 的strftime()函数的封装。根据 PHP 编译时所使用的系统的strftime()函数的不同,您可能会有更多或更少的转换说明符可用。请查阅您的系统的 man 页面以获取有效说明符的完整列表。但是,在 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,其中第一周是当前年份中至少有 4 天的第一周,并以星期一作为一周的第一天。
- %w - 星期几,十进制数,星期日为 0
- %W - 当年的周数,十进制数,以第一个星期一作为第一周的第一天开始计算
- %x - 当前区域设置下的首选日期表示,不包括时间
- %X - 当前区域设置下的首选时间表示,不包括日期
- %y - 十进制数年份,不包括世纪(范围为 00 到 99)
- %Y - 包括世纪的十进制数年份
- %Z - 时区或名称或缩写
- %% - 字面上的 '%' 字符
另请参阅 $smarty.now、
strftime()、
{html_select_date} 和
date tips 页面。