mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
* Update book.xml to en * Update dateperiod.xml to en * Update formats.xml to en * Update construct.xml to en * Update createfromdatestring.xml to en * Update format.xml to en * Update createfromiso8601string.xml to en * Update getdateinterval.xml to en * Update getenddate.xml to en * Update getrecurrences.xml to en * Update getstartdate.xml to en * Update dateperiod.xml * Update formats.xml * Update construct.xml * Update createfromdatestring.xml * Update format.xml * Update createfromiso8601string.xml * Update getdateinterval.xml * Update getenddate.xml * Update getrecurrences.xml * Update getstartdate.xml * Update createfromimmutable.xml to en * Update createfromimmutable.xml * Update createfromimmutable.xml * Update createfrominterface.xml to en * Update modify.xml to en * Update settimezone.xml to en * Update construct.xml to en * Update createfrominterface.xml * Update createfrominterface.xml to en * Update createfrominterface.xml * Update createfrommutable.xml to en * Update getlasterrors.xml to en * Update modify.xml to en * Update setdate.xml to en * Update setisodate.xml to en * Update settime.xml to en * Update settimestamp.xml to en * Update settimezone.xml to en * Update sub.xml to en * Update diff.xml to en * Update format.xml to En * Update getoffset.xml to en * Update format.xml * Update gettimestamp.xml to en * Update gettimezone.xml to en * Update serialize.xml to en * Update unserialize.xml to en * Update construct.xml to en * Update getlocation.xml to en * Update getoffset.xml to en * Update getoffset.xml Само обновление * Update gettransitions.xml to en * Update listabbreviations.xml to en * Update checkdate.xml to en * Update date-default-timezone-get.xml to en * Update date-default-timezone-set.xml to en * Update date-parse-from-format.xml to en * Update date-parse.xml to en * Update date-parse-from-format.xml * Update date-sun-info.xml to en * Update date-sunrise.xml to en * Update date-sunset.xml to en * Update date.xml to en * Update getdate.xml to en * Update gettimeofday.xml to en * Update date-parse-from-format.xml * Update getoffset.xml * Update gettransitions.xml * Update diff.xml * Update getoffset.xml * Update gmdate.xml to en * Update gmmktime.xml to en * Update gmstrftime.xml to en * Update idate.xml to en * Update localtime.xml to en * Update microtime.xml to en * Update microtime.xml * Update mktime.xml to en * Update strftime.xml to en * Update strptime.xml to en * Update strtotime.xml to en * Update time.xml to en * Update timezone-name-from-abbr.xml to en * Update timezone-version-get.xml to en * Update construct.xml Sync rev ID * Update getlasterrors.xml stync rev id * Update gettransitions.xml fix xml styntax error * Update idate.xml fix xml syntax error
1227 lines
53 KiB
XML
1227 lines
53 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 3a8c3e77df070a046c9d5b56b68926ca2d7e5ee3 Maintainer: aur Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<chapter xml:id="datetime.formats" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<title>Допустимые форматы даты и времени</title>
|
||
|
||
<para>
|
||
Раздел описывает разные форматы в BNF-подобном синтаксисе, которые принимает парсер:
|
||
<classname>DateTimeImmutable</classname>, <classname>DateTime</classname>,
|
||
<function>date_create_immutable</function>,
|
||
<function>date_create</function>, <function>date_parse</function>
|
||
и <function>strtotime</function>. Форматы сгруппированы
|
||
по разделам. В большей части случаев форматы из разных разделов, разделённые
|
||
пробелом, запятой или точкой, разрешается указывать в одной и той же строке даты и времени. Для каждого
|
||
поддерживаемого формата приводится один или ряд примеров,
|
||
и описание формата. Символы в одинарных кавычках нечувствительны к регистру
|
||
(<literal>'t'</literal> эквивалентно как <literal>t</literal>, так и <literal>T</literal>),
|
||
символы в двойных кавычках чувствительны к регистру
|
||
(<literal>"T"</literal> означает только <literal>T</literal>).
|
||
</para>
|
||
<para>
|
||
О форматировании объектов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>
|
||
рассказывает документация метода <function>DateTimeInterface::format</function>.
|
||
</para>
|
||
|
||
<para>
|
||
При форматировании дат рекомендуют учитывать общие правила.
|
||
</para>
|
||
<orderedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Парсер разрешает для каждой единицы измерения (год, месяц, день, час, минута, секунда) полный диапазон значений.
|
||
Для года — 4 цифры, для месяца — 0-12, дня — 0-31, для часа — 0-24, а для минуты — 0-59.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Для секунд допускается значение 60, поскольку иногда появляются строки даты с високосной секундой.
|
||
Но PHP реализует Unix-время, в котором значение "60" недопустимо для числа секунд, и поэтому возникает переполнение.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Функция <function>strtotime</function> возвращает значение &false;, если какое-либо число выходит за пределы диапазонов,
|
||
а конструктор <function>DateTimeImmutable::__construct</function> выбрасывает исключение.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Каждый элемент времени сбрасывается на 0, если строка содержит дату.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Каждый менее значимый элемент времени сбрасывается до 0,
|
||
если строка содержит какую-либо часть времени.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Парсер только разбирает строку и не выполняет проверок, чтобы работать быстро и универсально.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Кроме правил для отдельных элементов времени синтаксический анализатор
|
||
понимает и более специфические <link linkend="datetime.formats.compound">комбинированные форматы</link>
|
||
наподбие разбора меток Unix-времени — <literal>@1690388256</literal>
|
||
и дат недели в формате ISO — <literal>2008-W28-3</literal>.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Неверные даты проверяются отдельно:
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$res = date_parse("2015-09-31");
|
||
var_dump($res["warnings"]);
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs;
|
||
<screen>
|
||
<![CDATA[
|
||
array(1) {
|
||
[11] =>
|
||
string(27) "The parsed date was invalid"
|
||
}
|
||
]]>
|
||
</screen>
|
||
</informalexample>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Крайние случаи уже обрабатывают, для этого вызывают
|
||
метод <function>DateTimeImmutable::createFromFormat</function>
|
||
и указывают правильный формат.
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$res = DateTimeImmutable::createFromFormat("Y-m-d", "2015-09-34");
|
||
var_dump($res);
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs;
|
||
<screen>
|
||
<![CDATA[
|
||
object(DateTimeImmutable)#1 (3) {
|
||
["date"]=>
|
||
string(26) "2015-10-04 17:24:43.000000"
|
||
["timezone_type"]=>
|
||
int(3)
|
||
["timezone"]=>
|
||
string(13) "Europe/London"
|
||
}
|
||
]]>
|
||
</screen>
|
||
</informalexample>
|
||
</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<!--Time Formats: {{{-->
|
||
<sect1 annotations="chunk:false" xml:id="datetime.formats.time">
|
||
<title>Форматы времени</title>
|
||
<para>
|
||
Страница описывает форматы даты и времени в BNF-подобном синтаксисе, которые понимает парсер
|
||
методов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>,
|
||
и функций <function>date_create</function>,
|
||
<function>date_create_immutable</function>
|
||
и <function>strtotime</function>.
|
||
</para>
|
||
<para>
|
||
О форматировании объектов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>
|
||
рассказывает документация метода <function>DateTimeInterface::format</function>.
|
||
</para>
|
||
|
||
<table>
|
||
<title>Символы форматирования времени</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><literal>frac</literal> (дробная часть)</entry>
|
||
<entry>. [0-9]+</entry>
|
||
<entry>".21342", ".85"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>hh</literal> (часы в 12-часовом формате)</entry>
|
||
<entry>"0"?[1-9] | "1"[0-2]</entry>
|
||
<entry>"04", "7", "12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>HH</literal> (часы в 24-часовом формате)</entry>
|
||
<entry>[01][0-9] | "2"[0-4]</entry>
|
||
<entry>"04", "07", "19"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>meridian</literal> (Ante meridiem или Post meridiem)</entry>
|
||
<entry>[AaPp] .? [Mm] .? [\0\t ]</entry>
|
||
<entry>"A.m.", "pM", "am."</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>MM</literal> (минуты)</entry>
|
||
<entry>[0-5][0-9]</entry>
|
||
<entry>"00", "12", "59"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>II</literal> (секунды)</entry>
|
||
<entry>[0-5][0-9]</entry>
|
||
<entry>"00", "12", "59"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>space</literal> (символ пробела или табуляции)</entry>
|
||
<entry>[ \t]</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>tz</literal> (часовой пояс)</entry>
|
||
<entry>"("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+</entry>
|
||
<entry>"CEST", "Europe/Amsterdam", "America/Indiana/Knox"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>tzcorrection</literal> (числовое значение смещения часового пояса)</entry>
|
||
<entry>"GMT"? [+-] <literal>hh</literal> ":"? <literal>MM</literal>?</entry>
|
||
<entry>"+0400", "GMT-07:00", "-07:00"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>12-часовой формат</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Только часы (с Ante meridiem или Post meridiem)</entry>
|
||
<entry><literal>hh</literal> <literal>space</literal>? <literal>meridian</literal></entry>
|
||
<entry>"4 am", "5PM"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы и минуты (с <literal>Ante meridiem</literal> или <literal>Post meridiem</literal>)</entry>
|
||
<entry><literal>hh</literal> [.:] <literal>MM</literal> <literal>space</literal>? <literal>meridian</literal></entry>
|
||
<entry>"4:08 am", "7:19P.M."</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы, минуты и секунды (с <literal>Ante meridiem</literal> или <literal>Post meridiem</literal>)</entry>
|
||
<entry><literal>hh</literal> [.:] <literal>MM</literal> [.:] <literal>II</literal> <literal>space</literal>? <literal>meridian</literal></entry>
|
||
<entry>"4:08:37 am", "7:19:19P.M."</entry>
|
||
</row>
|
||
<row>
|
||
<entry>MS SQL (Часы, минуты, секунды и дробная часть с Ante meridiem или Post meridiem)</entry>
|
||
<entry><literal>hh</literal> ":" <literal>MM</literal> ":" <literal>II</literal> [.:] [0-9]+ <literal>meridian</literal></entry>
|
||
<entry>"4:08:39:12313am"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>24-часовой формат</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Часы и минуты</entry>
|
||
<entry>'t'? <literal>HH</literal> [.:] <literal>MM</literal></entry>
|
||
<entry>"04:08", "19.19", "T23:43"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы и минуты (без двоеточия-разделителя)</entry>
|
||
<entry>'t'? <literal>HH</literal> <literal>MM</literal></entry>
|
||
<entry>"0408", "t1919", "T2343"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы, минуты и секунды</entry>
|
||
<entry>'t'? <literal>HH</literal> [.:] <literal>MM</literal> [.:] <literal>II</literal></entry>
|
||
<entry>"04.08.37", "t19:19:19"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы, минуты и секунды (без двоеточия-разделителя)</entry>
|
||
<entry>'t'? <literal>HH</literal> <literal>MM</literal> <literal>II</literal></entry>
|
||
<entry>"040837", "T191919"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы, минуты, секунды и часовой пояс</entry>
|
||
<entry>'t'? <literal>HH</literal> [.:] <literal>MM</literal> [.:] <literal>II</literal> <literal>space</literal>? ( <literal>tzcorrection</literal> | <literal>tz</literal> )</entry>
|
||
<entry>"040837CEST", "T191919-0700"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Часы, минуты, секунды и дробная часть</entry>
|
||
<entry>'t'? <literal>HH</literal> [.:] <literal>MM</literal> [.:] <literal>II</literal> <literal>frac</literal></entry>
|
||
<entry>"04.08.37.81412", "19:19:19.532453"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Сведения о часовом поясе</entry>
|
||
<entry><literal>tz</literal> | <literal>tzcorrection</literal></entry>
|
||
<entry>"CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</sect1>
|
||
<!--}}}-->
|
||
|
||
<!--Date Formats: {{{-->
|
||
<sect1 annotations="chunk:false" xml:id="datetime.formats.date">
|
||
<title>Форматы даты</title>
|
||
|
||
<para>
|
||
Эта страница описывает форматы даты в BNF-подобном синтаксисе, которые понимает парсер функций:
|
||
<classname>DateTimeImmutable</classname>, <classname>DateTime</classname>,
|
||
<function>date_create</function>,
|
||
<function>date_create_immutable</function> и
|
||
<function>strtotime</function>.
|
||
</para>
|
||
<para>
|
||
Чтобы отформатировать объекты <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>,
|
||
обратитесь к документации метода <function>DateTimeInterface::format</function>.
|
||
</para>
|
||
|
||
<table>
|
||
<title>Символы форматирования даты</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><literal>daysuf</literal> (суффикс порядкового числительного дня месяца)</entry>
|
||
<entry>"st" | "nd" | "rd" | "th"</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>dd</literal> (день месяца без ведущих нулей)</entry>
|
||
<entry>([0-2]?[0-9] | "3"[01]) <literal>daysuf</literal>?</entry>
|
||
<entry>"7th", "22nd", "31"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>DD</literal> (день месяца, 2 цифры с ведущим нулём)</entry>
|
||
<entry>"0" [0-9] | [1-2][0-9] | "3" [01]</entry>
|
||
<entry>"07", "31"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>m</literal> (полное или сокращённое название месяца)</entry>
|
||
<entry>'january' | 'february' | 'march' | 'april' | 'may' | 'june' |
|
||
'july' | 'august' | 'september' | 'october' | 'november' | 'december' |
|
||
'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' |
|
||
'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI"
|
||
| "VII" | "VIII" | "IX" | "X" | "XI" | "XII"</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>M</literal> (сокращённое название месяца)</entry>
|
||
<entry>'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' |
|
||
'sep' | 'sept' | 'oct' | 'nov' | 'dec'</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>mm</literal> (порядковый номер месяца)</entry>
|
||
<entry>"0"? [0-9] | "1"[0-2]</entry>
|
||
<entry>"0", "04", "7", "12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>MM</literal> (порядковый номер месяца, 2 цифры с ведущим нулём)</entry>
|
||
<entry>"0" [0-9] | "1"[0-2]</entry>
|
||
<entry>"00", "04", "07", "12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>y</literal> (порядковый номер года)</entry>
|
||
<entry>[0-9]{1,4}</entry>
|
||
<entry>"00", "78", "08", "8", "2008"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>yy</literal> (порядковый номер года, 2 цифры)</entry>
|
||
<entry>[0-9]{2}</entry>
|
||
<entry>"00", "08", "78"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>YY</literal> (порядковый номер года, 4 цифры)</entry>
|
||
<entry>[0-9]{4}</entry>
|
||
<entry>"2000", "2008", "1978"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>YYY</literal></entry>
|
||
<entry>[0-9]{5,19}</entry>
|
||
<entry>"81412", "20192"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>Региональные нотации</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Месяц и день в американской нотации</entry>
|
||
<entry><literal>mm</literal> "/" <literal>dd</literal></entry>
|
||
<entry>"5/12", "10/27"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Месяц, день и год в американской нотации</entry>
|
||
<entry><literal>mm</literal> "/" <literal>dd</literal> "/" <literal>y</literal></entry>
|
||
<entry>"12/22/78", "1/17/2006", "1/17/6"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4 цифры года, месяц и день со слешем-разделителем</entry>
|
||
<entry><literal>YY</literal> "/" <literal>mm</literal> "/" <literal>dd</literal></entry>
|
||
<entry>"2008/6/30", "1978/12/22"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4 цифры года и месяц (GNU)</entry>
|
||
<entry><literal>YY</literal> "-" <literal>mm</literal></entry>
|
||
<entry>"2008-6", "2008-06", "1978-12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Год, месяц и день с дефисом-разделителем</entry>
|
||
<entry><literal>y</literal> "-" <literal>mm</literal> "-" <literal>dd</literal></entry>
|
||
<entry>"2008-6-30", "78-12-22", "8-6-21"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>День, месяц и 4 цифры года с разделителем в виде точки, символа табуляции или дефиса</entry>
|
||
<entry><literal>dd</literal> [.\t-] <literal>mm</literal> [.-] <literal>YY</literal></entry>
|
||
<entry>"30-6-2008", "22.12.1978"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>День, месяц и 2 цифры года с разделителем в виде точки или символа табуляции</entry>
|
||
<entry><literal>dd</literal> [.\t] <literal>mm</literal> "." <literal>yy</literal></entry>
|
||
<entry>"30.6.08", "22.12.78"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>День, название месяца и год</entry>
|
||
<entry><literal>dd</literal> ([ \t.-])* <literal>m</literal> ([ \t.-])* <literal>y</literal></entry>
|
||
<entry>"30-June 2008", "22DEC78", "14 III 1879"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Название месяца и 4 цифры года (день месяца сбрасывается на 1)</entry>
|
||
<entry><literal>m</literal> ([ \t.-])* <literal>YY</literal></entry>
|
||
<entry>"June 2008", "DEC1978", "March 1879"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4 цифры года и название месяца (день месяца сбрасывается на 1)</entry>
|
||
<entry><literal>YY</literal> ([ \t.-])* <literal>m</literal></entry>
|
||
<entry>"2008 June", "1978-XII", "1879.MArCH"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Название месяца, день и год</entry>
|
||
<entry><literal>m</literal> ([ .\t-])* <literal>dd</literal> [,.stndrh\t ]+ <literal>y</literal></entry>
|
||
<entry>"July 1st, 2008", "April 17, 1790", "May.9,78"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Название месяца и день</entry>
|
||
<entry><literal>m</literal> ([ .\t-])* <literal>dd</literal> [,.stndrh\t ]*</entry>
|
||
<entry>"July 1st,", "Apr 17", "May.9"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>День и название месяца</entry>
|
||
<entry><literal>dd</literal> ([ .\t-])* <literal>m</literal></entry>
|
||
<entry>"1 July", "17 Apr", "9.May"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Сокращённое название месяца, день и год</entry>
|
||
<entry><literal>M</literal> "-" <literal>DD</literal> "-" <literal>y</literal></entry>
|
||
<entry>"May-09-78", "Apr-17-1790"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Год, сокращённое название месяца и день</entry>
|
||
<entry><literal>y</literal> "-" <literal>M</literal> "-" <literal>DD</literal></entry>
|
||
<entry>"78-Dec-22", "1814-MAY-17"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Только год</entry>
|
||
<entry><literal>YY</literal></entry>
|
||
<entry>"1978", "2008"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Год (расширенный, 5-19 цифр со знаком)</entry>
|
||
<entry>[+-] <literal>YYY</literal></entry>
|
||
<entry>"-81120", "+20192"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Только название месяца</entry>
|
||
<entry><literal>m</literal></entry>
|
||
<entry>"March", "jun", "DEC"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>Нотации стандарта ISO8601</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>8 цифр (год, месяц и день)</entry>
|
||
<entry><literal>YY</literal> <literal>MM</literal> <literal>DD</literal></entry>
|
||
<entry>"15810726", "19780417", "18140517"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>8 цифр (год, месяц и день) со слешем-разделителем</entry>
|
||
<entry><literal>YY</literal> "/" <literal>MM</literal> "/" <literal>DD</literal></entry>
|
||
<entry>"2008/06/30", "1978/12/22"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2 цифры года, месяц и день с дефисом-разделителем</entry>
|
||
<entry><literal>yy</literal> "-" <literal>MM</literal> "-" <literal>DD</literal></entry>
|
||
<entry>"08-06-30", "78-12-22"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4 цифры года с необязательным знаком, месяц и день</entry>
|
||
<entry>[+-]? <literal>YY</literal> "-" <literal>MM</literal> "-" <literal>DD</literal></entry>
|
||
<entry>"-0002-07-26", "+1978-04-17", "1814-05-17"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Пятизначный год с обязательным знаком, месяцем и днём</entry>
|
||
<entry>[+-] <literal>YYY</literal> "-" <literal>MM</literal> "-" <literal>DD</literal></entry>
|
||
<entry>"-81120-02-26", "+20192-04-17"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<note>
|
||
<para>
|
||
Форматы <literal>y</literal> и <literal>yy</literal> для годов меньше 100 обрабатываются
|
||
в исключительных случаях при использовании символов <literal>y</literal>
|
||
или <literal>yy</literal>. К году добавляется значение 2000, если год попадает
|
||
в диапазон 0-69 (включительно). К году добавляется значение 1900, если год принадлежит
|
||
диапазону 70-99 (включительно). Поэтому дата "00-01-01" интерпретируется как "2000-01-01".
|
||
</para>
|
||
</note>
|
||
|
||
<note>
|
||
<para>
|
||
Формат "День, месяц и 2 цифры года с разделителем в виде точки или символа табуляции"
|
||
(<literal>dd</literal> [.\t] <literal>mm</literal> "." <literal>yy</literal>) работает только
|
||
для годов из диапазона 61-99 (включительно). За пределами этого диапазона отдаётся
|
||
предпочтение <emphasis>формату времени</emphasis> "<literal>HH</literal> [.:]
|
||
<literal>MM</literal> [.:] <literal>SS</literal>".
|
||
</para>
|
||
</note>
|
||
|
||
<note>
|
||
<para>
|
||
Формат «Год (и только год)» надёжно работает, только если метод уже нашёл строку времени,
|
||
иначе, если четыре цифры года соответствуют формату <literal>HH</literal> <literal>MM</literal>,
|
||
вместо года устанавливаются эти два элемента даты.
|
||
</para>
|
||
<para>
|
||
Для согласованного разбора только года
|
||
вызывают метод <function>DateTimeImmutable::createFromFormat</function>
|
||
со спецификатором <literal>Y</literal>.
|
||
</para>
|
||
</note>
|
||
|
||
<caution>
|
||
<para>
|
||
Возможен выход за границы диапазона форматов <literal>dd</literal> и <literal>DD</literal>.
|
||
День месяца с порядковым номером 0 подразумевает последний день предыдущего месяца
|
||
в результате выхода за границы диапазона. Согласно написанному, "2008-08-00" равносильно
|
||
"2008-07-31", а "2008-06-31" соответствует "2008-07-01" (в июне всего 30 дней).
|
||
</para>
|
||
<para>
|
||
Обратите внимание на ограничение диапазона дней: 0-31, как указывает
|
||
регулярное выражение в предыдущих параграфах. Поэтому дата наподобие "2008-06-32" некорректна.
|
||
</para>
|
||
<para>
|
||
Допускается также выход за границы диапазона для форматов <literal>mm</literal>
|
||
и <literal>MM</literal> со значением 0. Значение месяца 0 соответствует декабрю
|
||
предыдущего года. Например, дата "2008-00-22" равносильна "2007-12-22".
|
||
</para>
|
||
<para>
|
||
Если учесть два предыдущих замечания и выход за границы диапазона дней и месяцев,
|
||
получим следующее: дата "2008-00-00" в первую очередь преобразуется в "2007-12-00",
|
||
которая будет преобразована в "2007-11-30". То же случится с датой "0000-00-00", которая
|
||
преобразуется к "-0001-11-30" (минус первый год в календаре ISO 8601 и 2 год до н. э.
|
||
по григорианскому календарю).
|
||
</para>
|
||
</caution>
|
||
</sect1>
|
||
<!--}}}-->
|
||
|
||
<!--Compound Formats: {{{-->
|
||
<sect1 annotations="chunk:false" xml:id="datetime.formats.compound">
|
||
<title>Составные форматы</title>
|
||
|
||
<para>
|
||
Страница описывает разные составные форматы даты и времени
|
||
в BNF-подобном синтаксисе, которые понимает парсер
|
||
методов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>,
|
||
и функций <function>date_create</function>, <function>date_create_immutable</function>
|
||
и <function>strtotime</function>.
|
||
</para>
|
||
<para>
|
||
О форматировании объектов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>
|
||
рассказывает документация метода <function>DateTimeInterface::format</function>.
|
||
</para>
|
||
|
||
<table>
|
||
<title>Символы составного форматирования</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Форматы</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><literal>DD</literal> (день месяца с ведущим нулём)</entry>
|
||
<entry>"0" [0-9] | [1-2][0-9] | "3" [01]</entry>
|
||
<entry>"02", "12", "31"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>doy</literal> (день в году)</entry>
|
||
<entry>"00"[1-9] | "0"[1-9][0-9] | [1-2][0-9][0-9] | "3"[0-5][0-9] | "36"[0-6]</entry>
|
||
<entry>"001", "012", "180", "350", "366"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>frac</literal> (дробная часть)</entry>
|
||
<entry>. [0-9]+</entry>
|
||
<entry>".21342", ".85"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>hh</literal> (часы)</entry>
|
||
<entry>"0"?[1-9] | "1"[0-2]</entry>
|
||
<entry>"04", "7", "12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>HH</literal> (часы с ведущим нулём)</entry>
|
||
<entry>[01][0-9] | "2"[0-4]</entry>
|
||
<entry>"04", "07", "19"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>meridian</literal> (Ante meridiem или Post meridiem)</entry>
|
||
<entry>[AaPp] .? [Mm] .? [\0\t ]</entry>
|
||
<entry>"A.m.", "pM", "am."</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>ii</literal> (минуты)</entry>
|
||
<entry>[0-5]?[0-9]</entry>
|
||
<entry>"04", "8", "59"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>II</literal> (минуты с ведущим нулём)</entry>
|
||
<entry>[0-5][0-9]</entry>
|
||
<entry>"04", "08", "59"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>M</literal> (сокращённое наименование месяца)</entry>
|
||
<entry>'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec'</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>MM</literal> (месяц с ведущим нулём)</entry>
|
||
<entry>[0-1][0-9]</entry>
|
||
<entry>"00", "12"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>space</literal> (символ пробела или табуляции)</entry>
|
||
<entry>[ \t]</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>ss</literal> (секунды)</entry>
|
||
<entry>([0-5]?[0-9])|60</entry>
|
||
<entry>"04", "8", "59", "60" (дополнительная секунда)</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>SS</literal> (секунды с ведущим нулём)</entry>
|
||
<entry>[0-5][0-9]</entry>
|
||
<entry>"04", "08", "59"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>W</literal> (неделя в году)</entry>
|
||
<entry>"0"[1-9] | [1-4][0-9] | "5"[0-3]</entry>
|
||
<entry>"05", "17", "53"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>tzcorrection</literal> (смещение часового пояса)</entry>
|
||
<entry>"GMT"? [+-] <literal>hh</literal> ":"? <literal>II</literal>?</entry>
|
||
<entry>"+0400", "GMT-07:00", "-07:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>YY</literal> (4 цифры года)</entry>
|
||
<entry>[0-9]{4}</entry>
|
||
<entry>"2000", "2008", "1978"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>Форматы стандартов</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>ATOM</entry>
|
||
<entry>"2022-06-02T16:58:35+00:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>COOKIE</entry>
|
||
<entry>"Thursday, 02-Jun-2022 16:58:35 UTC"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ISO8601</entry>
|
||
<entry>"2022-06-02T16:58:35+0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;822">RFC 822</link></entry>
|
||
<entry>"Thu, 02 Jun 22 16:58:35 +0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;850">RFC 850</link></entry>
|
||
<entry>"Thursday, 02-Jun-22 16:58:35 UTC"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;1036">RFC 1036</link></entry>
|
||
<entry>"Thu, 02 Jun 22 16:58:35 +0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;1123">RFC 1123</link></entry>
|
||
<entry>"Thu, 02 Jun 2022 16:58:35 +0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;2822">RFC 2822</link></entry>
|
||
<entry>"Thu, 02 Jun 2022 16:58:35 +0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;3339">RFC 3339</link></entry>
|
||
<entry>"2022-06-02T16:58:35+00:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;3339">RFC 3339</link> Extended</entry>
|
||
<entry>"2022-06-02T16:58:35.698+00:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><link xlink:href="&url.rfc;7231">RFC 7231</link></entry>
|
||
<entry>"Thu, 02 Jun 2022 16:58:35 GMT"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>RSS</entry>
|
||
<entry>"Thu, 02 Jun 2022 16:58:35 +0000"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>W3C</entry>
|
||
<entry>"2022-06-02T16:58:35+00:00"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>Региональные нотации</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Общий формат log-записей</entry>
|
||
<entry><literal>dd</literal> "/" <literal>M</literal> "/" <literal>YY</literal> : <literal>HH</literal> ":" <literal>II</literal> ":" <literal>SS</literal> <literal>space</literal> <literal>tzcorrection</literal></entry>
|
||
<entry>"10/Oct/2000:13:55:36 -0700"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>EXIF</entry>
|
||
<entry><literal>YY</literal> ":" <literal>MM</literal> ":" <literal>DD</literal> " " <literal>HH</literal> ":" <literal>II</literal> ":" <literal>SS</literal></entry>
|
||
<entry>"2008:08:07 18:11:31"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Год и неделя в формате ISO</entry>
|
||
<entry><literal>YY</literal> "-"? "W" <literal>W</literal></entry>
|
||
<entry>"2008W27", "2008-W28"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Год, неделя в формате ISO и день недели</entry>
|
||
<entry><literal>YY</literal> "-"? "W" <literal>W</literal> "-"? [0-7]</entry>
|
||
<entry>"2008W273", "2008-W28-3"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>MySQL</entry>
|
||
<entry><literal>YY</literal> "-" <literal>MM</literal> "-" <literal>DD</literal> " " <literal>HH</literal> ":" <literal>II</literal> ":" <literal>SS</literal></entry>
|
||
<entry>"2008-08-07 18:11:31"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>PostgreSQL: год и день в году</entry>
|
||
<entry><literal>YY</literal> "."? <literal>doy</literal></entry>
|
||
<entry>"2008.197", "2008197"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>SOAP</entry>
|
||
<entry><literal>YY</literal> "-" <literal>MM</literal> "-" <literal>DD</literal> "T" <literal>HH</literal> ":" <literal>II</literal> ":" <literal>SS</literal> <literal>frac</literal> <literal>tzcorrection</literal>?</entry>
|
||
<entry>"2008-07-01T22:35:17.02", "2008-07-01T22:35:17.03+08:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Unix Timestamp</entry>
|
||
<entry>"@" "-"? [0-9]+</entry>
|
||
<entry>"@1215282385"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Метка времени Unix с микросекундами</entry>
|
||
<entry>"@" "-"? [0-9]+ "." [0-9]{0,6}</entry>
|
||
<entry>"@1607974647.503686"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>XMLRPC</entry>
|
||
<entry><literal>YY</literal> <literal>MM</literal> <literal>DD</literal> "T" <literal>hh</literal> ":" <literal>II</literal> ":" <literal>SS</literal></entry>
|
||
<entry>"20080701T22:38:07", "20080701T9:38:07"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>XMLRPC (Compact)</entry>
|
||
<entry><literal>YY</literal> <literal>MM</literal> <literal>DD</literal> 't' <literal>hh</literal> <literal>II</literal> <literal>SS</literal></entry>
|
||
<entry>"20080701t223807", "20080701T093807"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>WDDX</entry>
|
||
<entry><literal>YY</literal> "-" <literal>mm</literal> "-" <literal>dd</literal> "T" <literal>hh</literal> ":" <literal>ii</literal> ":" <literal>ss</literal></entry>
|
||
<entry>"2008-7-1T9:3:37"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<note>
|
||
<para>
|
||
Символ "W" в форматах "Год и неделя в формате ISO" и "Год, неделя в формате ISO и день
|
||
недели" чувствителен к регистру, символ "W" указывают только в верхнем
|
||
регистре.
|
||
</para>
|
||
<para>
|
||
Символ "T" в форматах SOAP, XMLRPC и WDDX также чувствителен к регистру,
|
||
символ "T" указывают только в верхнем регистре.
|
||
</para>
|
||
<para>
|
||
Формат "Unix Timestamp" устанавливает часовой пояс в UTC.
|
||
</para>
|
||
</note>
|
||
</sect1>
|
||
<!--}}}-->
|
||
|
||
<!--Relative Formats: {{{-->
|
||
<sect1 annotations="chunk:false" xml:id="datetime.formats.relative">
|
||
<title>Относительные форматы</title>
|
||
|
||
<para>
|
||
Страница описывает относительные форматы даты и времени в BNF-подобном синтаксисе, которые понимает парсер
|
||
классов <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>,
|
||
и функций <function>date_create</function>,
|
||
<function>date_create_immutable</function>,
|
||
<function>strtotime</function>.
|
||
</para>
|
||
<para>
|
||
Объекты даты и времени <classname>DateTimeImmutable</classname> и <classname>DateTime</classname>
|
||
форматируют нотацией, которую описывает документация к методу <function>DateTimeInterface::format</function>.
|
||
</para>
|
||
|
||
<table>
|
||
<title>Символы</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Формат</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><literal>dayname</literal> (название дня недели)</entry>
|
||
<entry>
|
||
'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' |
|
||
'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' |
|
||
'sat'
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>daytext</literal> (будние дни — пн–пт, без учёта праздничных дней)</entry>
|
||
<entry>'weekday' | 'weekdays'</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>number</literal> (числа)</entry>
|
||
<entry>[+-]?[0-9]+</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>ordinal</literal> (порядковые числительные и относительные указатели)</entry>
|
||
<entry>
|
||
'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' |
|
||
'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' |
|
||
'next' | 'last' | 'previous' | 'this'
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>reltext</literal> (относительные указатели)</entry>
|
||
<entry>'next' | 'last' | 'previous' | 'this'</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>space</literal> (символы пробела и табуляции)</entry>
|
||
<entry>[ \t]+</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>unit</literal> (единицы измерения)</entry>
|
||
<entry>
|
||
'ms' | 'µs' | (( 'msec' | 'millisecond' | 'µsec' | 'microsecond'
|
||
| 'usec' | 'sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' |
|
||
'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' |
|
||
<literal>daytext</literal>
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<table>
|
||
<title>Обозначения на основе дней</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Формат</entry>
|
||
<entry>Описание</entry>
|
||
<entry>Примеры</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>'yesterday'</entry>
|
||
<entry>Полночь вчера</entry>
|
||
<entry>"yesterday 14:00"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'midnight'</entry>
|
||
<entry>Время устанавливается в 00:00:00</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry>'today'</entry>
|
||
<entry>Время устанавливается в 00:00:00</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry>'now'</entry>
|
||
<entry>Текущее время</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry>'noon'</entry>
|
||
<entry>Время устанавливается в 12:00:00</entry>
|
||
<entry>"yesterday noon"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'tomorrow'</entry>
|
||
<entry>Полночь завтра</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry>'back of' <literal>hour</literal></entry>
|
||
<entry>15 минут заданного часа</entry>
|
||
<entry>"back of 7pm", "back of 15"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'front of' <literal>hour</literal></entry>
|
||
<entry>Без 15 минут заданный час</entry>
|
||
<entry>"front of 5am", "front of 23"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'first day of'</entry>
|
||
<entry>
|
||
Устанавливает первый день текущего месяца. Обычно эту нотацию лучше использовать
|
||
вместе с названием месяца, следующим за ней, иначе будет учитываться текущий месяц.
|
||
</entry>
|
||
<entry>"first day of January 2008"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'last day of'</entry>
|
||
<entry>
|
||
Устанавливает последний день текущего месяца. Обычно эту нотацию лучше использовать
|
||
вместе с названием месяца, следующим за ней, иначе будет учитываться текущий месяц.
|
||
</entry>
|
||
<entry>"last day of next month"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>ordinal</literal> <literal>space</literal> <literal>dayname</literal> <literal>space</literal> 'of'</entry>
|
||
<entry>Вычисляет <literal>x</literal> день недели текущего или заданного месяца.</entry>
|
||
<entry>"first sat of July 2008"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'last' <literal>space</literal> <literal>dayname</literal> <literal>space</literal> 'of'</entry>
|
||
<entry>Вычисляет <emphasis>последний</emphasis> день недели текущего или заданного месяца.</entry>
|
||
<entry>"last sat of July 2008"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>number</literal> <literal>space</literal>? (<literal>unit</literal> | 'week')</entry>
|
||
<entry>Вычисляет относительное время при использовании числовых значений периода.</entry>
|
||
<entry>"+5 weeks", "12 day", "-7 weekdays"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>(<literal>ordinal</literal> | <literal>reltext</literal>) <literal>space</literal> <literal>unit</literal></entry>
|
||
<entry>Вычисляет относительное время при использовании строковых значений периода.
|
||
<literal>last</literal> и <literal>previous</literal> то же, что и
|
||
<literal>-1</literal>, <literal>this</literal> ни на что не влияет, а
|
||
<literal>next</literal> – <literal>+1</literal>.
|
||
</entry>
|
||
<entry>"fifth day", "second month", "last day", "previous year"</entry>
|
||
</row>
|
||
<row>
|
||
<entry>'ago'</entry>
|
||
<entry>Вычитает все значения из последнего полученного момента времени.</entry>
|
||
<entry>"2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago ago"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>dayname</literal></entry>
|
||
<entry>
|
||
Перемещается на следующий день указанного дня недели. (Смотрите <link linkend="datetime.formats.relative.dayname-note">замечание</link>)
|
||
</entry>
|
||
<entry>"Monday"</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>reltext</literal> <literal>space</literal> 'week'</entry>
|
||
<entry>Разбирает специфичный формат "weekday + last/this/next week".</entry>
|
||
<entry>"Monday next week"</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<note>
|
||
<para>
|
||
Относительные выражения обрабатываются только <emphasis>после</emphasis> неотносительных.
|
||
Например, "+1 week july 2008" эквивалентно "july 2008 +1 week".
|
||
</para>
|
||
<para>
|
||
Исключение из этого правила составляют: "yesterday", "midnight", "today", "noon" и "tomorrow".
|
||
Записи "tomorrow 11:00" и "11:00 tomorrow" отличаются. Если принять сегодняшнюю дату за "July 23rd, 2008",
|
||
то первая запись возвращает "2008-07-24 11:00", а вторая "2008-07-24 00:00". Причина такого поведения в том,
|
||
что эти пять выражений влияют непосредственно на время.
|
||
</para>
|
||
<para>
|
||
Ключевые слова наподобие "first day of" зависят от контекста строки относительного формата.
|
||
Для строк в статическом методе или функции референтом станет текущая системная метка времени,
|
||
но методе <function>DateTime::modify</function>
|
||
или <function>DateTimeImmutable::modify</function>
|
||
референтом станет объект, на котором вызывается метод <literal>modify()</literal>.
|
||
</para>
|
||
</note>
|
||
|
||
<note>
|
||
<para xml:id="datetime.formats.relative.dayname-note">
|
||
Следует обратить внимание на следующие замечания относительно текущего дня недели и дня недели,
|
||
который указали в строке даты и времени. Текущий день недели вычисляется из независимой части строки
|
||
даты и времени.
|
||
</para>
|
||
<orderedlist>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>dayname</literal>" <emphasis>не</emphasis> сдвигает дату на другой день.
|
||
(Например: "Wed July 23rd, 2008" означает "2008-07-23").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>number</literal> <literal>dayname</literal>" <emphasis>не</emphasis> сдвигает дату
|
||
на другой день. (Например: "1 wednesday july 23rd, 2008" означает "2008-07-23").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>number</literal> week <literal>dayname</literal>" добавляет соответствующее число недель,
|
||
но <emphasis>не</emphasis> сдвигает дату на другой день. В этом случае имеют место два различных блока
|
||
"<literal>number</literal> week" и "<literal>dayname</literal>".
|
||
(Например: "+1 week wednesday july 23rd, 2008" означает "2008-07-30").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>ordinal</literal> <literal>dayname</literal>" <emphasis>сдвигает</emphasis> дату
|
||
на другой день. (Например: "last wednesday july 23rd, 2008" означает "2008-07-30").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>number</literal> week <literal>ordinal</literal> <literal>dayname</literal>"
|
||
добавляет число недель, которое соответствует символу числа, а затем <emphasis>сдвигает</emphasis> дату на другой день.
|
||
В этом случае имеют место два различных блока "<literal>number</literal> week"
|
||
и "<literal>ordinal</literal> <literal>dayname</literal>".
|
||
(Например: "+1 week first wednesday july 23rd, 2008" означает "2008-08-06").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>ordinal</literal> <literal>dayname</literal> 'of' " <emphasis>не</emphasis> сдвигает дату
|
||
на другой день. (Например: "first wednesday of july 23rd, 2008" означает "2008-07-02", потому как
|
||
определённые фразы с 'of' сбрасывают день месяца на '1' и в этом случае игнорируется '23rd').
|
||
</simpara>
|
||
</listitem>
|
||
</orderedlist>
|
||
<para>
|
||
Также следует обратить внимание, что "of" в "<literal>ordinal</literal>
|
||
<literal>space</literal> <literal>dayname</literal>
|
||
<literal>space</literal> 'of' " и "'last' <literal>space</literal>
|
||
<literal>dayname</literal> <literal>space</literal> 'of' " имеет особый смысл.
|
||
</para>
|
||
<orderedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Устанавливает для дня месяца значение 1.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>ordinal</literal> <literal>dayname</literal> 'of' "<emphasis>не</emphasis> сдвигает дату
|
||
на другой день. (Например: "first tuesday of july 2008" означает "2008-07-01").
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"<literal>ordinal</literal> <literal>dayname</literal>" <emphasis>сдвигает</emphasis> дату на другой день.
|
||
(Например: "first tuesday july 2008" означает "2008-07-08", смотрите также 4-й пункт предыдущего замечания).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"'last' <literal>dayname</literal> 'of' " получает последний в месяце <literal>dayname</literal>.
|
||
(Например: "last wed of july 2008" означает "2008-07-30")
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
"'last' <literal>dayname</literal>" получает последний <literal>dayname</literal> перед текущим днём.
|
||
(Например: "last wed july 2008" означает "2008-06-25"; "july 2008" устанавливает дату в "2008-07-01",
|
||
а после "last wed" смещает дату к предыдущей среде, а именно к "2008-06-25").
|
||
</simpara>
|
||
</listitem>
|
||
</orderedlist>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Относительные значения в месяцах рассчитываются на основе продолжительности месяца.
|
||
Например, из "+2 month 2011-11-30" получится "2012-01-30".
|
||
Это связано с тем, что ноябрь состоит из 30 дней, а декабрь из 31 дня, что составляет 61 день.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Под числом (<literal>number</literal>) подразумевается целое число
|
||
(<emphasis>integer</emphasis>); десятичная точка (или запятая) рассматривается как разделитель,
|
||
если указали десятичное число.
|
||
Например, <literal>'+1.5 hours'</literal> посчитается
|
||
как <literal>'+1 5 hours'</literal>, а не <literal>'+1 hour +30 minutes'</literal>.
|
||
</para>
|
||
</note>
|
||
|
||
<sect2 role="changelog">
|
||
&reftitle.changelog;
|
||
<para>
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>&Version;</entry>
|
||
<entry>&Description;</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>8.4.0</entry>
|
||
<entry>
|
||
Символы <literal>number</literal> теперь снова принимают последовательность знаков плюс
|
||
и минус в записях наподобие <literal>+-2</literal>, и другие комбинации
|
||
множественных знаков.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>8.2.0</entry>
|
||
<entry>
|
||
Символы <literal>number</literal> больше не принимают последовательность знаков плюс
|
||
и минус, поэтому запись наподобие <literal>+-2</literal> недопустима.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7.0.8</entry>
|
||
<entry>
|
||
Недели начинаются только с понедельника. Раньше разрешалось определять
|
||
начало недели с воскресенья.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
<!--}}}-->
|
||
|
||
</chapter>
|
||
<!-- 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=marker fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|