reference/datetime/functions/date.xml
7f385d3239d0df073e2208fb0c3c243ef13553bb
...
...
@@ -3,7 +3,7 @@
3
3
<refentry xml:id="function.date" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
4
4
<refnamediv>
5
5
<refname>date</refname>
6
-
<refpurpose>Format a local time/date</refpurpose>
6
+
<refpurpose>Format a Unix timestamp</refpurpose>
7
7
</refnamediv>
8
8

9
9
<refsect1 role="description">
...
...
@@ -11,303 +11,54 @@
11
11
<methodsynopsis>
12
12
<type>string</type><methodname>date</methodname>
13
13
<methodparam><type>string</type><parameter>format</parameter></methodparam>
14
-
<methodparam choice="opt"><type>int</type><parameter>timestamp</parameter><initializer>time()</initializer></methodparam>
14
+
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>timestamp</parameter><initializer>&null;</initializer></methodparam>
15
15
</methodsynopsis>
16
16
<para>
17
17
Returns a string formatted according to the given format string using the
18
-
given integer <parameter>timestamp</parameter> or the current time
19
-
if no timestamp is given. In other words, <parameter>timestamp</parameter>
18
+
given integer <parameter>timestamp</parameter> (Unix timestamp) or the current time
19
+
if no timestamp is given. In other words, <parameter>timestamp</parameter>
20
20
is optional and defaults to the value of <function>time</function>.
21
21
</para>
22
+
<warning>
23
+
<para>
24
+
Unix timestamps do not handle timezones. Use the
25
+
<classname>DateTimeImmutable</classname> class, and its
26
+
<methodname>DateTimeInterface::format</methodname> formatting method to
27
+
format date/time information with a timezone attached.
28
+
</para>
29
+
</warning>
22
30
</refsect1>
23
31

24
32
<refsect1 role="parameters">
25
33
&reftitle.parameters;
26
-
<para>
27
-
<variablelist>
28
-
<varlistentry>
29
-
<term><parameter>format</parameter></term>
30
-
<listitem>
31
-
<para>
32
-
The format of the outputted date <type>string</type>. See the formatting
33
-
options below. There are also several
34
-
<link linkend="datetime.constants.types">predefined date constants</link>
35
-
that may be used instead, so for example <constant>DATE_RSS</constant>
36
-
contains the format string <literal>'D, d M Y H:i:s'</literal>.
37
-
</para>
38
-
<para>
39
-
<table>
40
-
<title>The following characters are recognized in the
41
-
<parameter>format</parameter> parameter string</title>
42
-
<tgroup cols="3">
43
-
<thead>
44
-
<row>
45
-
<entry><parameter>format</parameter> character</entry>
46
-
<entry>Description</entry>
47
-
<entry>Example returned values</entry>
48
-
</row>
49
-
</thead>
50
-
<tbody>
51
-
<row>
52
-
<entry align="center"><emphasis>Day</emphasis></entry>
53
-
<entry>---</entry>
54
-
<entry>---</entry>
55
-
</row>
56
-
<row>
57
-
<entry><literal>d</literal></entry>
58
-
<entry>Day of the month, 2 digits with leading zeros</entry>
59
-
<entry><literal>01</literal> to <literal>31</literal></entry>
60
-
</row>
61
-
<row>
62
-
<entry><literal>D</literal></entry>
63
-
<entry>A textual representation of a day, three letters</entry>
64
-
<entry><literal>Mon</literal> through <literal>Sun</literal></entry>
65
-
</row>
66
-
<row>
67
-
<entry><literal>j</literal></entry>
68
-
<entry>Day of the month without leading zeros</entry>
69
-
<entry><literal>1</literal> to <literal>31</literal></entry>
70
-
</row>
71
-
<row>
72
-
<entry><literal>l</literal> (lowercase 'L')</entry>
73
-
<entry>A full textual representation of the day of the week</entry>
74
-
<entry><literal>Sunday</literal> through <literal>Saturday</literal></entry>
75
-
</row>
76
-
<row>
77
-
<entry><literal>N</literal></entry>
78
-
<entry>ISO-8601 numeric representation of the day of the week (added in
79
-
PHP 5.1.0)</entry>
80
-
<entry><literal>1</literal> (for Monday) through <literal>7</literal> (for Sunday)</entry>
81
-
</row>
82
-
<row>
83
-
<entry><literal>S</literal></entry>
84
-
<entry>English ordinal suffix for the day of the month, 2 characters</entry>
85
-
<entry>
86
-
<literal>st</literal>, <literal>nd</literal>, <literal>rd</literal> or
87
-
<literal>th</literal>. Works well with <literal>j</literal>
88
-
</entry>
89
-
</row>
90
-
<row>
91
-
<entry><literal>w</literal></entry>
92
-
<entry>Numeric representation of the day of the week</entry>
93
-
<entry><literal>0</literal> (for Sunday) through <literal>6</literal> (for Saturday)</entry>
94
-
</row>
95
-
<row>
96
-
<entry><literal>z</literal></entry>
97
-
<entry>The day of the year (starting from 0)</entry>
98
-
<entry><literal>0</literal> through <literal>365</literal></entry>
99
-
</row>
100
-
<row>
101
-
<entry align="center"><emphasis>Week</emphasis></entry>
102
-
<entry>---</entry>
103
-
<entry>---</entry>
104
-
</row>
105
-
<row>
106
-
<entry><literal>W</literal></entry>
107
-
<entry>ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)</entry>
108
-
<entry>Example: <literal>42</literal> (the 42nd week in the year)</entry>
109
-
</row>
110
-
<row>
111
-
<entry align="center"><emphasis>Month</emphasis></entry>
112
-
<entry>---</entry>
113
-
<entry>---</entry>
114
-
</row>
115
-
<row>
116
-
<entry><literal>F</literal></entry>
117
-
<entry>A full textual representation of a month, such as January or March</entry>
118
-
<entry><literal>January</literal> through <literal>December</literal></entry>
119
-
</row>
120
-
<row>
121
-
<entry><literal>m</literal></entry>
122
-
<entry>Numeric representation of a month, with leading zeros</entry>
123
-
<entry><literal>01</literal> through <literal>12</literal></entry>
124
-
</row>
125
-
<row>
126
-
<entry><literal>M</literal></entry>
127
-
<entry>A short textual representation of a month, three letters</entry>
128
-
<entry><literal>Jan</literal> through <literal>Dec</literal></entry>
129
-
</row>
130
-
<row>
131
-
<entry><literal>n</literal></entry>
132
-
<entry>Numeric representation of a month, without leading zeros</entry>
133
-
<entry><literal>1</literal> through <literal>12</literal></entry>
134
-
</row>
135
-
<row>
136
-
<entry><literal>t</literal></entry>
137
-
<entry>Number of days in the given month</entry>
138
-
<entry><literal>28</literal> through <literal>31</literal></entry>
139
-
</row>
140
-
<row>
141
-
<entry align="center"><emphasis>Year</emphasis></entry>
142
-
<entry>---</entry>
143
-
<entry>---</entry>
144
-
</row>
145
-
<row>
146
-
<entry><literal>L</literal></entry>
147
-
<entry>Whether it's a leap year</entry>
148
-
<entry><literal>1</literal> if it is a leap year, <literal>0</literal> otherwise.</entry>
149
-
</row>
150
-
<row>
151
-
<entry><literal>o</literal></entry>
152
-
<entry>ISO-8601 year number. This has the same value as
153
-
<literal>Y</literal>, except that if the ISO week number
154
-
(<literal>W</literal>) belongs to the previous or next year, that year
155
-
is used instead. (added in PHP 5.1.0)</entry>
156
-
<entry>Examples: <literal>1999</literal> or <literal>2003</literal></entry>
157
-
</row>
158
-
<row>
159
-
<entry><literal>Y</literal></entry>
160
-
<entry>A full numeric representation of a year, 4 digits</entry>
161
-
<entry>Examples: <literal>1999</literal> or <literal>2003</literal></entry>
162
-
</row>
163
-
<row>
164
-
<entry><literal>y</literal></entry>
165
-
<entry>A two digit representation of a year</entry>
166
-
<entry>Examples: <literal>99</literal> or <literal>03</literal></entry>
167
-
</row>
168
-
<row>
169
-
<entry align="center"><emphasis>Time</emphasis></entry>
170
-
<entry>---</entry>
171
-
<entry>---</entry>
172
-
</row>
173
-
<row>
174
-
<entry><literal>a</literal></entry>
175
-
<entry>Lowercase Ante meridiem and Post meridiem</entry>
176
-
<entry><literal>am</literal> or <literal>pm</literal></entry>
177
-
</row>
178
-
<row>
179
-
<entry><literal>A</literal></entry>
180
-
<entry>Uppercase Ante meridiem and Post meridiem</entry>
181
-
<entry><literal>AM</literal> or <literal>PM</literal></entry>
182
-
</row>
183
-
<row>
184
-
<entry><literal>B</literal></entry>
185
-
<entry>Swatch Internet time</entry>
186
-
<entry><literal>000</literal> through <literal>999</literal></entry>
187
-
</row>
188
-
<row>
189
-
<entry><literal>g</literal></entry>
190
-
<entry>12-hour format of an hour without leading zeros</entry>
191
-
<entry><literal>1</literal> through <literal>12</literal></entry>
192
-
</row>
193
-
<row>
194
-
<entry><literal>G</literal></entry>
195
-
<entry>24-hour format of an hour without leading zeros</entry>
196
-
<entry><literal>0</literal> through <literal>23</literal></entry>
197
-
</row>
198
-
<row>
199
-
<entry><literal>h</literal></entry>
200
-
<entry>12-hour format of an hour with leading zeros</entry>
201
-
<entry><literal>01</literal> through <literal>12</literal></entry>
202
-
</row>
203
-
<row>
204
-
<entry><literal>H</literal></entry>
205
-
<entry>24-hour format of an hour with leading zeros</entry>
206
-
<entry><literal>00</literal> through <literal>23</literal></entry>
207
-
</row>
208
-
<row>
209
-
<entry><literal>i</literal></entry>
210
-
<entry>Minutes with leading zeros</entry>
211
-
<entry><literal>00</literal> to <literal>59</literal></entry>
212
-
</row>
213
-
<row>
214
-
<entry><literal>s</literal></entry>
215
-
<entry>Seconds, with leading zeros</entry>
216
-
<entry><literal>00</literal> through <literal>59</literal></entry>
217
-
</row>
218
-
<row>
219
-
<entry><literal>u</literal></entry>
220
-
<entry>Microseconds (added in PHP 5.2.2)</entry>
221
-
<entry>Example: <literal>654321</literal></entry>
222
-
</row>
223
-
<row>
224
-
<entry align="center"><emphasis>Timezone</emphasis></entry>
225
-
<entry>---</entry>
226
-
<entry>---</entry>
227
-
</row>
228
-
<row>
229
-
<entry><literal>e</literal></entry>
230
-
<entry>Timezone identifier (added in PHP 5.1.0)</entry>
231
-
<entry>Examples: <literal>UTC</literal>, <literal>GMT</literal>, <literal>Atlantic/Azores</literal></entry>
232
-
</row>
233
-
<row>
234
-
<entry><literal>I</literal> (capital i)</entry>
235
-
<entry>Whether or not the date is in daylight saving time</entry>
236
-
<entry><literal>1</literal> if Daylight Saving Time, <literal>0</literal> otherwise.</entry>
237
-
</row>
238
-
<row>
239
-
<entry><literal>O</literal></entry>
240
-
<entry>Difference to Greenwich time (GMT) in hours</entry>
241
-
<entry>Example: <literal>+0200</literal></entry>
242
-
</row>
243
-
<row>
244
-
<entry><literal>P</literal></entry>
245
-
<entry>Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3)</entry>
246
-
<entry>Example: <literal>+02:00</literal></entry>
247
-
</row>
248
-
<row>
249
-
<entry><literal>T</literal></entry>
250
-
<entry>Timezone abbreviation</entry>
251
-
<entry>Examples: <literal>EST</literal>, <literal>MDT</literal> ...</entry>
252
-
</row>
253
-
<row>
254
-
<entry><literal>Z</literal></entry>
255
-
<entry>Timezone offset in seconds. The offset for timezones west of UTC is always
256
-
negative, and for those east of UTC is always positive.</entry>
257
-
<entry><literal>-43200</literal> through <literal>50400</literal></entry>
258
-
</row>
259
-
<row>
260
-
<entry align="center"><emphasis>Full Date/Time</emphasis></entry>
261
-
<entry>---</entry>
262
-
<entry>---</entry>
263
-
</row>
264
-
<row>
265
-
<entry><literal>c</literal></entry>
266
-
<entry>ISO 8601 date (added in PHP 5)</entry>
267
-
<entry>2004-02-12T15:19:21+00:00</entry>
268
-
</row>
269
-
<row>
270
-
<entry><literal>r</literal></entry>
271
-
<entry><link xlink:href="&url.rfc;2822">RFC 2822</link> formatted date</entry>
272
-
<entry>Example: <literal>Thu, 21 Dec 2000 16:01:07 +0200</literal></entry>
273
-
</row>
274
-
<row>
275
-
<entry><literal>U</literal></entry>
276
-
<entry>Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)</entry>
277
-
<entry>See also <function>time</function></entry>
278
-
</row>
279
-
</tbody>
280
-
</tgroup>
281
-
</table>
282
-
</para>
283
-
<para>
284
-
Unrecognized characters in the format string will be printed
285
-
as-is. The <literal>Z</literal> format will always return
286
-
<literal>0</literal> when using <function>gmdate</function>.
287
-
</para>
34
+
<variablelist>
35
+
<varlistentry>
36
+
<term><parameter>format</parameter></term>
37
+
<listitem>
38
+
<para>
39
+
Format accepted by <methodname>DateTimeInterface::format</methodname>.
40
+
</para>
288
41
<note>
289
-
<para>
290
-
Since this function only accepts <type>integer</type> timestamps the
291
-
<literal>u</literal> format character is only useful when using the
292
-
<function>date_format</function> function with user based timestamps
293
-
created with <function>date_create</function>.
294
-
</para>
42
+
<simpara>
43
+
<function>date</function> will always generate
44
+
<literal>000000</literal> as microseconds since it takes an <type>int</type>
45
+
parameter, whereas <methodname>DateTime::format</methodname> does
46
+
support microseconds if <classname>DateTime</classname> was
47
+
created with microseconds.
48
+
</simpara>
295
49
</note>
296
-
</listitem>
297
-
</varlistentry>
50
+
</listitem>
51
+
</varlistentry>
298
52

299
-
&date.timestamp.description;
53
+
&date.timestamp.description;
300
54

301
-
</variablelist>
302
-
</para>
55
+
</variablelist>
303
56
</refsect1>
304
57

305
58
<refsect1 role="returnvalues">
306
59
&reftitle.returnvalues;
307
60
<para>
308
-
Returns a formatted date string. If a non-numeric value is used for
309
-
<parameter>timestamp</parameter>, &false; is returned and an
310
-
<constant>E_WARNING</constant> level error is emitted.
61
+
Returns a formatted date string.
311
62
</para>
312
63
</refsect1>
313
64

...
...
@@ -331,24 +82,9 @@
331
82
</thead>
332
83
<tbody>
333
84
<row>
334
-
<entry>5.1.0</entry>
85
+
<entry>8.0.0</entry>
335
86
<entry>
336
-
The valid range of a timestamp is typically from Fri, 13 Dec
337
-
1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are
338
-
the dates that correspond to the minimum and maximum values for
339
-
a 32-bit signed integer). However, before PHP 5.1.0 this range was limited
340
-
from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
341
-
</entry>
342
-
</row>
343
-
344
-
&date.timezone.errors.changelog;
345
-

346
-
<row>
347
-
<entry>5.1.1</entry>
348
-
<entry>
349
-
There are useful <link linkend="datetime.constants">constants</link>
350
-
of standard date/time formats that can be used to specify the
351
-
<parameter>format</parameter> parameter.
87
+
<parameter>timestamp</parameter> is nullable now.
352
88
</entry>
353
89
</row>
354
90
</tbody>
...
...
@@ -365,7 +101,7 @@
365
101
<programlisting role="php">
366
102
<![CDATA[
367
103
<?php
368
-
// set the default timezone to use. Available since PHP 5.1
104
+
// set the default timezone to use.
369
105
date_default_timezone_set('UTC');
370
106

371
107

...
...
@@ -379,8 +115,8 @@ echo date('l jS \of F Y h:i:s A');
379
115
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
380
116

381
117
/* use the constants in the format parameter */
382
-
// prints something like: Mon, 15 Aug 2005 15:12:46 UTC
383
-
echo date(DATE_RFC822);
118
+
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
119
+
echo date(DATE_RFC2822);
384
120

385
121
// prints something like: 2000-07-01T00:00:00+00:00
386
122
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
...
...
@@ -454,15 +190,16 @@ $today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
454
190
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
455
191
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
456
192
$today = date("H:i:s"); // 17:16:18
193
+
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
457
194
?>
458
195
]]>
459
196
</programlisting>
460
197
</example>
461
198
</para>
462
199
<para>
463
-
To format dates in other languages, you should use the
464
-
<function>setlocale</function> and <function>strftime</function>
465
-
functions instead of <function>date</function>.
200
+
To format dates in other languages,
201
+
<methodname>IntlDateFormatter::format</methodname>
202
+
can be used instead of <function>date</function>.
466
203
</para>
467
204
</refsect1>
468
205

...
...
@@ -480,7 +217,7 @@ $today = date("H:i:s"); // 17:16:18
480
217
<tip>
481
218
<para>
482
219
Timestamp of the start of the request is available in
483
-
<varname>$_SERVER['REQUEST_TIME']</varname> since PHP 5.1.
220
+
<varname>$_SERVER['REQUEST_TIME']</varname>.
484
221
</para>
485
222
</tip>
486
223
</refsect1>
...
...
@@ -489,20 +226,20 @@ $today = date("H:i:s"); // 17:16:18
489
226
&reftitle.seealso;
490
227
<para>
491
228
<simplelist>
229
+
<member><methodname>DateTimeImmutable::__construct</methodname></member>
230
+
<member><methodname>DateTimeInterface::format</methodname></member>
492
231
<member><function>gmdate</function></member>
493
232
<member><function>idate</function></member>
494
233
<member><function>getdate</function></member>
495
234
<member><function>getlastmod</function></member>
496
235
<member><function>mktime</function></member>
497
-
<member><function>strftime</function></member>
236
+
<member><methodname>IntlDateFormatter::format</methodname></member>
498
237
<member><function>time</function></member>
499
-
<member><function>strtotime</function></member>
500
-
<member><link linkend="datetime.constants.types">Predefined DateTime Constants</link></member>
238
+
<member><link linkend="datetimeinterface.constants.types">Predefined DateTime Constants</link></member>
501
239
</simplelist>
502
240
</para>
503
241
</refsect1>
504
242
</refentry>
505
-

506
243
<!-- Keep this comment at the end of the file
507
244
Local variables:
508
245
mode: sgml
509
246