aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
blob: edd81937bb5c0a9c180e80d4de20ce8fdb3188f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
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.