用来格式化一个日期和时间为给出的strftime()格式。传递给Smarty的日期可以是Unix的时间戳,MySQL时间戳,或者任何包含年月日的字符串,可以为PHP的strtotime()解析即可。设计者然后可以用date_format来完全控制日期的格式。如果传递给date_format的日期是空的并指定了第二个参数,那么第二个参数将作为日期进行格式化。
注意:自从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
模板使用$smarty.now来获得当前日期:
上述代码将输出:
|
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 - 以a.m.或p.m.表示的时间
%R - 24小时制的时间
%S - 秒数
%t - 制表符号
%T - 当前时间,等同于%H:%M:%S
%u - 以数字表示的星期,1代表星期一
%U - 当前年份的星期数,当年的第一个星期天作为第一周的第一天
%V - 根据ISO 8601:1988得出的当前年份的星期数,范围从01到53。第一周必须至少在当年有4天,而星期一是该周的第一天。
%w - 星期几,0表示星期天
%W - 当前年份的星期数,当年的第一个星期一作为第一周的第一天
%x - 不含时间的基于当前位置的日期表示
%X - 不含日期的基于当前位置的时间表示
%y - 不含世纪的年份(00到99)
%Y - 包含世纪的年份
%Z - 时区名或其缩写
%% - `%'字符