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:
This formats a date and time into the given
strftime()
format.
Dates can be passed to Smarty as unix
timestamps, mysql timestamps
or any string made up of month day year, parsable by php's
strtotime()
.
Designers can then use date_format
to have complete control of the
formatting of the date. If the date passed to
date_format
is empty and a second parameter is passed,
that will be used as the date to format.
Parameter Position | Type | Required | Default | Description |
---|---|---|---|---|
1 | string | No | %b %e, %Y | This is the format for the outputted date. |
2 | string | No | n/a | This is the default date if the input is empty. |
Since Smarty-2.6.10 numeric values passed to date_format
are
always (except for mysql timestamps, see
below) interpreted as a unix timestamp.
Before Smarty-2.6.10 numeric strings that where also parsable by
strtotime()
in php (like YYYYMMDD
)
where sometimes (depending on the underlying implementation of
strtotime()
) interpreted as
date strings and NOT as timestamps.
The only exception are mysql timestamps: They are also numeric
only and 14 characters long (YYYYMMDDHHMMSS
),
mysql timestamps have precedence over unix timestamps.
date_format
is essentially a wrapper to PHP's
strftime()
function.
You may have more or less conversion specifiers available depending
on your system's strftime()
function where PHP was compiled. Check your
system's manpage for a full list of valid specifiers. However, a few of
the specifiers are emulated on Windows. These are: %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')); ?>
This template uses
$smarty.now
to get the current time:
{$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}
This above will output:
Jan 1, 2022 01/01/22 02:33 pm Dec 31, 2021 Monday, December 1, 2021 14:33:00
date_format conversion specifiers:
%a - abbreviated weekday name according to the current locale
%A - full weekday name according to the current locale
%b - abbreviated month name according to the current locale
%B - full month name according to the current locale
%c - preferred date and time representation for the current locale
%C - century number (the year divided by 100 and truncated to an integer, range 00 to 99)
%d - day of the month as a decimal number (range 01 to 31)
%D - same as %m/%d/%y
%e - day of the month as a decimal number, a single digit is preceded by a space (range 1 to 31)
%g - Week-based year within century [00,99]
%G - Week-based year, including the century [0000,9999]
%h - same as %b
%H - hour as a decimal number using a 24-hour clock (range 00 to 23)
%I - hour as a decimal number using a 12-hour clock (range 01 to 12)
%j - day of the year as a decimal number (range 001 to 366)
%k - Hour (24-hour clock) single digits are preceded by a blank. (range 0 to 23)
%l - hour as a decimal number using a 12-hour clock, single digits preceeded by a space (range 1 to 12)
%m - month as a decimal number (range 01 to 12)
%M - minute as a decimal number
%n - newline character
%p - either `am' or `pm' according to the given time value, or the corresponding strings for the current locale
%r - time in a.m. and p.m. notation
%R - time in 24 hour notation
%S - second as a decimal number
%t - tab character
%T - current time, equal to %H:%M:%S
%u - weekday as a decimal number [1,7], with 1 representing Monday
%U - week number of the current year as a decimal number, starting with the first Sunday as the first day of the first week
%V - The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week.
%w - day of the week as a decimal, Sunday being 0
%W - week number of the current year as a decimal number, starting with the first Monday as the first day of the first week
%x - preferred date representation for the current locale without the time
%X - preferred time representation for the current locale without the date
%y - year as a decimal number without a century (range 00 to 99)
%Y - year as a decimal number including the century
%Z - time zone or name or abbreviation
%% - a literal `%' character
See also $smarty.now
,
strftime()
,
{html_select_date}
and the date tips page.