Revision 148 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
# date_formatThis formats a date and time into the given[`strftime()`](https://www.php.net/strftime) format. Dates can be passed toSmarty as unix [timestamps](https://www.php.net/function.time), [DateTimeobjects](https://www.php.net/class.DateTime), mysql timestamps or any stringmade up of month day year, parsable by php\'s[`strtotime()`](https://www.php.net/strtotime). Designers can then use`date_format` to have complete control of the formatting of the date. Ifthe date passed to `date_format` is empty and a second parameter ispassed, that will be used as the date to format.## Basic usage```smarty{$myVar|date_format:"%Y-%m-%d"}```## Parameters| 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()`](https://www.php.net/strftime) function. You may have more> or less conversion specifiers available depending on your system's> [`strftime()`](https://www.php.net/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.## Examples```php<?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/language-variables-smarty.md#smartynow-languagevariablessmartynow) toget the current time:```smarty{$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, 202201/01/2202:33 pmDec 31, 2021Monday, December 1, 202114:33:00```## Conversion specifiers`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 aninteger, 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 ispreceded 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 00to 23)- %I - hour as a decimal number using a 12-hour clock (range 01to 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 digitspreceded 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, orthe 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 representingMonday- %U - week number of the current year as a decimal number, startingwith the first Sunday as the first day of the first week- %V - The ISO 8601:1988 week number of the current year as a decimalnumber, range 01 to 53, where week 1 is the first week that has atleast 4 days in the current year, and with Monday as the first dayof the week.- %w - day of the week as a decimal, Sunday being 0- %W - week number of the current year as a decimal number, startingwith the first Monday as the first day of the first week- %x - preferred date representation for the current locale withoutthe time- %X - preferred time representation for the current locale withoutthe 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 '%' characterSee also [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow),[`strftime()`](https://www.php.net/strftime),[`{html_select_date}`](../language-custom-functions/language-function-html-select-date.md) and the[date tips](../../appendixes/tips.md#dates) page.