Skip to content

Commit 1e4fac8

Browse files
committed
DateTimeZone::listIdentifiers improvements
1 parent c904155 commit 1e4fac8

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

reference/datetime/datetimezone/listidentifiers.xml

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@
2020
<methodparam choice="opt"><type>int</type><parameter>timezoneGroup</parameter><initializer>DateTimeZone::ALL</initializer></methodparam>
2121
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>countryCode</parameter><initializer>&null;</initializer></methodparam>
2222
</methodsynopsis>
23+
<para>
24+
Return the list of <link xlink:href="https://en.wikipedia.org/wiki/Tz_database#Names_of_timezones">IANA Time Zone identifiers</link>.
25+
</para>
26+
27+
<note>
28+
<para>
29+
It's possible to detect the client (browser) timezone with JavaScript using
30+
<link xlink:href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#timezone">Intl.DateTimeFormat</link>
31+
or <link xlink:href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime#time_zones_and_offsets">Temporal.ZonedDateTime</link>.
32+
</para>
33+
</note>
34+
2335
</refsect1>
2436

2537
<refsect1 role="parameters">
@@ -96,25 +108,29 @@
96108
&reftitle.examples;
97109
<para>
98110
<example>
99-
<title>A <methodname>DateTimeZone::listIdentifiers</methodname> example</title>
100-
<programlisting role="php">
111+
<title>List identifiers with location comments</title>
112+
<programlisting role="php" annotations="interactive">
101113
<![CDATA[
102114
<?php
103-
$timezone_identifiers = DateTimeZone::listIdentifiers();
104-
for ($i=0; $i < 5; $i++) {
105-
echo "$timezone_identifiers[$i]\n";
115+
$identifiers = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
116+
117+
foreach ($identifiers as $tzid) {
118+
$tz = new DateTimeZone($tzid);
119+
$comments = $tz->getLocation()['comments'];
120+
echo $tzid . " (" . ($comments ?: 'Whole region') . ")\n";
106121
}
107-
?>
108122
]]>
109123
</programlisting>
110124
&example.outputs.similar;
111125
<screen>
112126
<![CDATA[
113-
Africa/Abidjan
114-
Africa/Accra
115-
Africa/Addis_Ababa
116-
Africa/Algiers
117-
Africa/Asmara
127+
// (Output omitted due to length)
128+
America/Antigua (Whole region)
129+
America/Araguaina (Tocantins)
130+
America/Argentina/Buenos_Aires (Buenos Aires (BA, CF))
131+
America/Argentina/Catamarca (Catamarca (CT), Chubut (CH))
132+
America/Argentina/Cordoba (Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF))
133+
// (Output omitted due to length)
118134
]]>
119135
</screen>
120136
</example>
@@ -123,14 +139,13 @@ Africa/Asmara
123139
<para>
124140
<example>
125141
<title>Listing identifiers for a specific region</title>
126-
<programlisting role="php">
142+
<programlisting role="php" annotations="interactive">
127143
<![CDATA[
128144
<?php
129145
$timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::ASIA );
130146
for ($i=0; $i < 5; $i++) {
131147
echo "$timezone_identifiers[$i]\n";
132148
}
133-
?>
134149
]]>
135150
</programlisting>
136151
&example.outputs.similar;
@@ -149,12 +164,11 @@ Asia/Aqtau
149164
<para>
150165
<example>
151166
<title>Listing identifiers for multiple regions</title>
152-
<programlisting role="php">
167+
<programlisting role="php" annotations="interactive">
153168
<![CDATA[
154169
<?php
155170
$timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::ASIA | DateTimeZone::PACIFIC );
156171
echo join( ', ', $timezone_identifiers );
157-
?>
158172
]]>
159173
</programlisting>
160174
&example.outputs.similar;
@@ -194,14 +208,13 @@ Pacific/Tarawa, Pacific/Tongatapu, Pacific/Wake, Pacific/Wallis
194208
<para>
195209
<example>
196210
<title>Listing identifiers for a single country</title>
197-
<programlisting role="php">
211+
<programlisting role="php" annotations="interactive">
198212
<![CDATA[
199213
<?php
200214
$timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::PER_COUNTRY, "UA" );
201215
foreach( $timezone_identifiers as $identifier ) {
202216
echo "$identifier\n";
203217
}
204-
?>
205218
]]>
206219
</programlisting>
207220
&example.outputs.similar;

0 commit comments

Comments
 (0)