date_format

    用来格式化一个日期和时间为给出的strftime()格式。传递给Smarty的日期可以是Unix的时间戳,MySQL时间戳,或者任何包含年月日的字符串,可以为PHP的strtotime()解析即可。设计者然后可以用date_format来完全控制日期的格式。如果传递给date_format的日期是空的并指定了第二个参数,那么第二个参数将作为日期进行格式化。

参数位置 类型 必需? 缺省 描述
1stringNo%b %e, %Y 输出日期的格式。
2stringNon/a 如果第一个参数为空,则使用该参数为缺省日期。

注意:自从Smarty-2.6.10开始,传递给date_format的数字值总是被理解为一个Unix时间戳(除了后面要讲到的MySQL时间戳)。

在Smarty-2.6.10之前,如果一个数字字符串(如YYYYMMDD)可以由PHP的strtotime()解析,有时会被解析为日期字符串而不是时间戳(取决于strtotime()的底层实现机制)。

唯一的例外是MySQL时间戳。它们只包含数字,14位长(YYYYMMDDHHMMSS),MySQL时间戳优先于Unix时间戳。

程序员注解:date_format其实就是PHP的strftime()函数的封装。PHP编译的系统上strftime()函数决定了转换子可用的数量。可用的转换子的完整列表可以检查系统的man手册。

例子5-8. date_format

<?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转换子如下:

    参见$smarty.nowstrftime(){html_select_date}以及日期提示页。