Dates

As a rule of thumb, always pass dates to Smarty as timestamps. This allows template designers to use date_format for full control over date formatting, and also makes it easy to compare dates if necessary.

Note: As of Smarty 1.4.0, you can pass dates to Smarty as unix timestamps, mysql timestamps, or any date parsable by strtotime().

Example 17-4. using date_format

{$startDate|date_format}

This will output:

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

This will output:

2001/01/04
{if $date1 < $date2}
   ...
{/if}

When using {html_select_date} in a template, The programmer will most likely want to convert the output from the form back into timestamp format. Here is a function to help you with that.

Example 17-5. converting form date elements back to a timestamp

<?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(0, 0, 0, $month, $day, $year);
}
?>