Smarty中date_format日期格式化详解
在php的smarty模板中date_format是对由php提供过来的时间秒进行转换成日期了,那么date_format函数到底怎么用有什么格式,我们一起来看看。
php中格式化输出日期和时间可用:date('Y-m-d H:i:s',时间戳); 的形式输出,对应的是“年-月-日 时:分:秒”。
Smarty中date_format函数都支持哪些格式
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模板中,如$time是php文件中assign过来的时间戳,在模板文件中写法为:
<{$time|date_format:'%Y-%m-%d %H:%M:%S'}> ,同样对应的输出格式为:“年-月-日 时:分:秒”。
例子:
<?php
//导入自定义smarty操作类SmartyInit.php
include_once('class/SmartyInit.php');
$smarty = new SmartyInit();
//设置默认时区为上海
date_default_timezone_set('Asia/Shanghai');
//输出echo strtotime('now'),结果如:1245763672
//可知strtotime('now')返回的是时间戳
//也可是从数据库得到的时间戳
$time = time();
echo 'php格式化输出:<br />';
echo '昨天:'.date('Y-m-d H:i:s', strtotime('-1 day')).'<br />';
//date('Y-m-d H:i:s'),不写第二个参数,默认为当前时间
//也可写为:date('Y-m-d H:i:s', strtotime('now'))
echo '今天:'.date('Y-m-d H:i:s').'<br />';
echo '明天:'.date('Y-m-d H:i:s', strtotime('1 day')).'<br />';
echo '赋值时间戳:'.date('Y-m-d H:i:s', $time).'<br />';
//strtotime('today')只输出当天日期,
//strtotime('today 00:00:00')可输出时间
$smarty->assign('yesterday', strtotime('yesterday'));
$smarty->assign('today', strtotime('today 20:15:04'));
$smarty->assign('tomorrow', strtotime('tomorrow'));
$smarty->assign('yesterday1', strtotime('-1 day'));
//等同$smarty->assign('today1', strtotime('0 day'));
$smarty->assign('today1', strtotime('now'));
$smarty->assign('tomorrow1', strtotime('1 day'));
$smarty->assign('time', $time);
$smarty->display('index.html');
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>smarty测试</title>
</head>
<body>
<p>smarty模板输出:<br />
昨天:<{$yesterday|date_format:'%Y-%m-%d %H:%M:%S'}>
<br />
今天:<{$today|date_format:'%Y-%m-%d %H:%M:%S'}>
<br />
明天:<{$tomorrow|date_format:'%Y-%m-%d %H:%M:%S'}>
</p>
<p>
昨天:<{$yesterday1|date_format:'%Y-%m-%d %H:%M:%S'}>
<br />
今天:<{$today1|date_format:'%Y-%m-%d %H:%M:%S'}>
<br />
明天:<{$tomorrow1|date_format:'%Y-%m-%d %H:%M:%S'}>
<br />
赋值时间戳:<{$time|date_format:'%Y-%m-%d %H:%M:%S'}>
</p>
smarty保留变量输出:<{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}>
</body>
</html>