-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathconstruct.xml
More file actions
185 lines (171 loc) · 6.04 KB
/
construct.xml
File metadata and controls
185 lines (171 loc) · 6.04 KB
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
176
177
178
179
180
181
182
183
184
185
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3a8c3e77df070a046c9d5b56b68926ca2d7e5ee3 Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="datetimezone.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>DateTimeZone::__construct</refname>
<refname>timezone_open</refname>
<refpurpose>Создаёт новый объект DateTimeZone</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<constructorsynopsis role="DateTimeZone">
<modifier>public</modifier> <methodname>DateTimeZone::__construct</methodname>
<methodparam><type>string</type><parameter>timezone</parameter></methodparam>
</constructorsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type class="union"><type>DateTimeZone</type><type>false</type></type><methodname>timezone_open</methodname>
<methodparam><type>string</type><parameter>timezone</parameter></methodparam>
</methodsynopsis>
<para>
Метод создаёт новый объект DateTimeZone.
</para>
<para>
Объект DateTimeZone поддерживает три типа представления часового пояса:
тип <literal>1</literal> — смещение относительно времени UTC,
тип <literal>2</literal> — аббревиатура часового пояса
и тип <literal>3</literal> — <link linkend="timezones">идентификатор часового пояса</link>, которые публикуются в базе данных часовых поясов организации IANA.
</para>
<para>
Объект DateTimeZone прикрепляют к объектам <classname>DateTime</classname> и <classname>DateTimeImmutable</classname>
для форматирования времени в заданном часовом поясе.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>timezone</parameter></term>
<listitem>
<para>
Поддерживаемое <link linkend="timezones">название часового пояса</link>,
значение смещения в формате +0200 или аббревиатура часового пояса наподобие BST.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Метод возвращает объект <classname>DateTimeZone</classname>, если выполнился успешно.
&return.falseforfailure.style.procedural;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
При передаче недопустимого часового пояса
метод выбрасывает исключение
<exceptionname>DateInvalidTimeZoneException</exceptionname>.
До PHP 8.3 вместо этого выбрасывалось исключение
<exceptionname>Exception</exceptionname>.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
При передаче недопустимых значений часового пояса
вместо общего исключения <exceptionname>Exception</exceptionname>
метод теперь выбрасывает исключение <exceptionname>DateInvalidTimeZoneException</exceptionname>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример создания и прикрепления часового пояса DateTimeZone к объекту даты и времени DateTimeImmutable</title>
<programlisting role="php">
<![CDATA[
<?php
$d = new DateTimeImmutable("2022-06-02 15:44:48 UTC");
$timezones = ['Europe/London', 'GMT+04:45', '-06:00', 'CEST'];
foreach ($timezones as $tz) {
$tzo = new DateTimeZone($tz);
$local = $d->setTimezone($tzo);
echo $local->format(DateTimeInterface::RFC2822 . ' — e') . "\n";
}
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Thu, 02 Jun 2022 16:44:48 +0100 — Europe/London
Thu, 02 Jun 2022 20:29:48 +0445 — +04:45
Thu, 02 Jun 2022 09:44:48 -0600 — -06:00
Thu, 02 Jun 2022 17:44:48 +0200 — CEST
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример перехвата ошибок при создании объекта <classname>DateTimeZone</classname></title>
<programlisting role="php">
<![CDATA[
<?php
// Обработка ошибок путём перехвата исключений
$timezones = array('Europe/London', 'Mars/Phobos', 'Jupiter/Europa');
foreach ($timezones as $tz) {
try {
$mars = new DateTimeZone($tz);
echo $mars->getName() . "\n";
} catch(Exception $e) {
echo $e->getMessage() . "\n";
}
}
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Europe/London
DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)
]]>
</screen>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->