176 lines
5.4 KiB
Markdown
176 lines
5.4 KiB
Markdown
date\_format {#language.modifier.date.format}
|
|
============
|
|
|
|
This formats a date and time into the given
|
|
[`strftime()`](&url.php-manual;strftime) format. Dates can be passed to
|
|
Smarty as unix [timestamps](&url.php-manual;function.time), [DateTime
|
|
objects](&url.php-manual;class.DateTime), mysql timestamps or any string
|
|
made up of month day year, parsable by php\'s
|
|
[`strtotime()`](&url.php-manual;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.
|
|
|
|
> **Note**
|
|
>
|
|
> 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.
|
|
|
|
> **Note**
|
|
>
|
|
> `date_format` is essentially a wrapper to PHP\'s
|
|
> [`strftime()`](&url.php-manual;strftime) function. You may have more
|
|
> or less conversion specifiers available depending on your system\'s
|
|
> [`strftime()`](&url.php-manual;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.
|
|
|
|
|
|
<?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`](#language.variables.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
|
|
preceded 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`](#language.variables.smarty.now),
|
|
[`strftime()`](&url.php-manual;strftime),
|
|
[`{html_select_date}`](#language.function.html.select.date) and the
|
|
[date tips](#tips.dates) page.
|