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,310 +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>
221
-
Microseconds (added in PHP 5.2.2). Note that
222
-
<function>date</function> will always generate
223
-
<literal>000000</literal> since it takes an <type>integer</type>
224
-
parameter, whereas <methodname>DateTime::format</methodname> does
225
-
support microseconds if <classname>DateTime</classname> was
226
-
created with microseconds.
227
-
</entry>
228
-
<entry>Example: <literal>654321</literal></entry>
229
-
</row>
230
-
<row>
231
-
<entry align="center"><emphasis>Timezone</emphasis></entry>
232
-
<entry>---</entry>
233
-
<entry>---</entry>
234
-
</row>
235
-
<row>
236
-
<entry><literal>e</literal></entry>
237
-
<entry>Timezone identifier (added in PHP 5.1.0)</entry>
238
-
<entry>Examples: <literal>UTC</literal>, <literal>GMT</literal>, <literal>Atlantic/Azores</literal></entry>
239
-
</row>
240
-
<row>
241
-
<entry><literal>I</literal> (capital i)</entry>
242
-
<entry>Whether or not the date is in daylight saving time</entry>
243
-
<entry><literal>1</literal> if Daylight Saving Time, <literal>0</literal> otherwise.</entry>
244
-
</row>
245
-
<row>
246
-
<entry><literal>O</literal></entry>
247
-
<entry>Difference to Greenwich time (GMT) in hours</entry>
248
-
<entry>Example: <literal>+0200</literal></entry>
249
-
</row>
250
-
<row>
251
-
<entry><literal>P</literal></entry>
252
-
<entry>Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3)</entry>
253
-
<entry>Example: <literal>+02:00</literal></entry>
254
-
</row>
255
-
<row>
256
-
<entry><literal>T</literal></entry>
257
-
<entry>Timezone abbreviation</entry>
258
-
<entry>Examples: <literal>EST</literal>, <literal>MDT</literal> ...</entry>
259
-
</row>
260
-
<row>
261
-
<entry><literal>Z</literal></entry>
262
-
<entry>Timezone offset in seconds. The offset for timezones west of UTC is always
263
-
negative, and for those east of UTC is always positive.</entry>
264
-
<entry><literal>-43200</literal> through <literal>50400</literal></entry>
265
-
</row>
266
-
<row>
267
-
<entry align="center"><emphasis>Full Date/Time</emphasis></entry>
268
-
<entry>---</entry>
269
-
<entry>---</entry>
270
-
</row>
271
-
<row>
272
-
<entry><literal>c</literal></entry>
273
-
<entry>ISO 8601 date (added in PHP 5)</entry>
274
-
<entry>2004-02-12T15:19:21+00:00</entry>
275
-
</row>
276
-
<row>
277
-
<entry><literal>r</literal></entry>
278
-
<entry><link xlink:href="&url.rfc;2822">RFC 2822</link> formatted date</entry>
279
-
<entry>Example: <literal>Thu, 21 Dec 2000 16:01:07 +0200</literal></entry>
280
-
</row>
281
-
<row>
282
-
<entry><literal>U</literal></entry>
283
-
<entry>Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)</entry>
284
-
<entry>See also <function>time</function></entry>
285
-
</row>
286
-
</tbody>
287
-
</tgroup>
288
-
</table>
289
-
</para>
290
-
<para>
291
-
Unrecognized characters in the format string will be printed
292
-
as-is. The <literal>Z</literal> format will always return
293
-
<literal>0</literal> when using <function>gmdate</function>.
294
-
</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>
295
41
<note>
296
-
<para>
297
-
Since this function only accepts <type>integer</type> timestamps the
298
-
<literal>u</literal> format character is only useful when using the
299
-
<function>date_format</function> function with user based timestamps
300
-
created with <function>date_create</function>.
301
-
</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>
302
49
</note>
303
-
</listitem>
304
-
</varlistentry>
50
+
</listitem>
51
+
</varlistentry>
305
52

306
-
&date.timestamp.description;
53
+
&date.timestamp.description;
307
54

308
-
</variablelist>
309
-
</para>
55
+
</variablelist>
310
56
</refsect1>
311
57

312
58
<refsect1 role="returnvalues">
313
59
&reftitle.returnvalues;
314
60
<para>
315
-
Returns a formatted date string. If a non-numeric value is used for
316
-
<parameter>timestamp</parameter>, &false; is returned and an
317
-
<constant>E_WARNING</constant> level error is emitted.
61
+
Returns a formatted date string.
318
62
</para>
319
63
</refsect1>
320
64

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

353
-
<row>
354
-
<entry>5.1.1</entry>
355
-
<entry>
356
-
There are useful <link linkend="datetime.constants">constants</link>
357
-
of standard date/time formats that can be used to specify the
358
-
<parameter>format</parameter> parameter.
87
+
<parameter>timestamp</parameter> is nullable now.
359
88
</entry>
360
89
</row>
361
90
</tbody>
...
...
@@ -372,7 +101,7 @@
372
101
<programlisting role="php">
373
102
<![CDATA[
374
103
<?php
375
-
// set the default timezone to use. Available since PHP 5.1
104
+
// set the default timezone to use.
376
105
date_default_timezone_set('UTC');
377
106

378
107

...
...
@@ -468,9 +197,9 @@ $today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQ
468
197
</example>
469
198
</para>
470
199
<para>
471
-
To format dates in other languages, you should use the
472
-
<function>setlocale</function> and <function>strftime</function>
473
-
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>.
474
203
</para>
475
204
</refsect1>
476
205

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

514
243
<!-- Keep this comment at the end of the file
515
244
Local variables:
516
245
mode: sgml
517
246