日期

    作为一个准则,总是以时间戳来向Smarty传递日期。这将允许模板设计者使用date_format修饰符来完全控制日期的格式,并在需要比较日期时相对简单一些。

例子18-4. 使用date_format

{$startDate|date_format}

    输出为:

Jan 4, 2009
{$startDate|date_format:"%Y/%m/%d"}

    输出为:

2009/01/04

    在模板中,可以通过时间戳比较日期:

{if $order_date < $invoice_date}
   ...do something..
{/if}

    在模板中如果使用{html_select_date},编程人员很可能会将表单递交的选择转换回时间戳。下面这个函数可以做到这点。

例子18-5. 将日期元素转换为时间戳

<?php

// this assumes your form elements are named
// startDate_Day, startDate_Month, startDate_Year

$startDate makeTimeStamp($startDate_Year$startDate_Month$startDate_Day);

function 
makeTimeStamp($year=''$month=''$day='')
{
   if(empty(
$year)) {
       
$year strftime('%Y');
   }
   if(empty(
$month)) {
       
$month strftime('%m');
   }
   if(empty(
$day)) {
       
$day strftime('%d');
   }

   return 
mktime(000$month$day$year);
}
?>

    参见{html_select_date}{html_select_time}date_format以及$smarty.now