What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
将日期和时间格式化成strftime()
的格式。
时间可以是unix的
时间戳,
DateTime 对象, mysql时间戳,或者月日年格式的字符串,与PHP函数strtotime()
类似。
模板设计者可以对date_format
的格式有完全的控制。
如果传递到date_format
的时间为空,
而第二个参数传递了值,那么第二个参数将作为需要格式化的时间。
参数顺序 | 类型 | 必选参数 | 默认值 | 说明 |
---|---|---|---|---|
1 | string | No | %b %e, %Y | 输出时间的格式定义 |
2 | string | No | n/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()
的wrapper。
在PHP编译时strftime()
的支持格式的数量将会受到系统影响。
请系统的说明找出完整的格式列表。
然而,部分格式是模拟了windows的行为,如 %D, %e, %h, %l, %n,
%r, %R, %t, %T。
Example 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支持格式:
%a - 当前区域星期几的简写
%A - 当前区域星期几的全称
%b - 当前区域月份的简写
%B - 当前区域月份的全称
%c - 当前区域首选的日期时间表达
%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d - 月份中的第几天,十进制数字(范围从 01 到 31)
%D - 和 %m/%d/%y 一样
%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
%g - 和 %G 一样,但是没有世纪
%G - 4 位数的年份
%h - 和 %b 一样
%H - 24 小时制的十进制小时数(范围从 00 到 23)
%I - 12 小时制的十进制小时数(范围从 00 到 12)
%j - 年份中的第几天,十进制数(范围从 001 到 366)
%k - 小时,24 小时格式,没有前导零
%l - 小时,12 小时格式,没有前导零
%m - 十进制月份(范围从 01 到 12)
%M - 十进制分钟数
%n - 换行符
%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串
%r - 用 a.m. 和 p.m. 符号的时间
%R - 24 小时符号的时间
%S - 十进制秒数
%t - 制表符
%T - 当前时间,和 %H:%M:%S 一样
%u - 星期几的十进制数表达 [1,7],1 表示星期一
%U - 本年的第几周,从第一周的第一个星期天作为第一天开始
%V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)
%w - 星期中的第几天,星期天为 0
%W - 本年的第几周数,从第一周的第一个星期一作为第一天开始
%x - 当前区域首选的时间表示法,不包括时间
%X - 当前区域首选的时间表示法,不包括日期
%y - 没有世纪数的十进制年份(范围从 00 到 99)
%Y - 包括世纪数的十进制年份
%Z - 时区名或缩写
%% - 文字上的 `%' 字符
参见 $smarty.now
,
strftime()
,
{html_select_date}
和 时间技巧文章.