在php中使用date函數來格式化時間戳記,smarty中可以使用date_format來實現
具體用法:
代碼如下 |
複製代碼 |
{$timestamp|date_fomat:”%Y-%m-%d %H:%M:%S”} |
注意:| 兩邊沒有空格
輸出形式:2010-07-10 16:30:25
其他用法如下:
代碼如下 |
複製代碼 |
{$smarty.now|date_format} {$smarty.now|date_format:”%A, %B %e, %Y”} {$smarty.now|date_format:”%H:%M:%S”} {$yesterday|date_format} {$yesterday|date_format:”%A, %B %e, %Y”} {$yesterday|date_format:”%H:%M:%S”} |
執行個體
date_format[日期格式]
index.php:
代碼如下 |
複製代碼 |
$smarty = new Smarty; $smarty->assign('yesterday', strtotime('-1 day')); $smarty->display('index.tpl'); |
index.tpl:
代碼如下 |
複製代碼 |
{$smarty.now|date_format} {$smarty.now|date_format:"%A, %B %e, %Y"} {$smarty.now|date_format:"%H:%M:%S"} {$yesterday|date_format} {$yesterday|date_format:"%A, %B %e, %Y"} {$yesterday|date_format:"%H:%M:%S"} |
OUTPUT:
代碼如下 |
複製代碼 |
Feb 6, 2001 Tuesday, February 6, 2001 14:33:00 Feb 5, 2001 Monday, February 5, 2001 14:33:00 |
smarty的date_format中不能有中文的解決
{$smarty.now|date_format:"%Y年%m月%d日"} 這樣寫就成了"2010年%m月%d日"+一些亂碼如果給漢字後加上空格就正常了,但是輸出也有了空格。
為瞭解決這個問題,讀了smarty的外掛程式代碼modifier.date_format.php:
發現裡面strftime這個PHP函數對於中文支援不好。
所以我修改了modifier.date_format.php函數,一勞永逸啊。大家可以直接複製替換原有內容即可。
而且我這個函數還是支援繁簡中文的
代碼如下 |
複製代碼 |
function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '') { if (substr(PHP_OS,0,3) == 'WIN') { $_win_from = array ('%e', '%T', '%D'); $_win_to = array ('%#d', '%H:%M:%S', '%m/%d/%y'); $format = str_replace($_win_from, $_win_to, $format); } $arrTemp = array('年','月','日','時','分','秒','?r'); foreach($arrTemp as $v){ if(strpos($format,$v)){ $strFormat = str_replace('%','',$format); } } if($string != '') { if(!emptyempty($strFormat)) return date($strFormat, smarty_make_timestamp($string)); else return strftime($format, smarty_make_timestamp($string)); } elseif (isset($default_date) && $default_date != '') { if(!emptyempty($strFormat)) return date($strFormat, smarty_make_timestamp($default_date)); else return strftime($format, smarty_make_timestamp($default_date)); } else { return; } } |