date_format
此格式将日期和时间格式化为给定的 strftime()
格式。日期可以以 Unix 时间戳、DateTime 对象、MySQL 时间戳或由 PHP 的 strtotime()
可解析的任何由月份、日期、年份组成的字符串传递给 Smarty。然后,设计人员可以使用 date_format
完全控制日期的格式化。如果传递给 date_format
的日期为空并且传递第二个参数,第二个参数将用作要格式化的日期。
基本用法
参数
参数位置 | 类型 | 必需 | 默认值 | 说明 |
---|---|---|---|---|
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}
上面的转换将输出
转换说明符
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.now
、strftime()
、{html_select_date}
和 日期提示 页面。