1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 08:12:14 +01:00
Files
archived-doc-ru/reference/datetime/functions/date.xml
2022-12-31 11:30:44 +03:00

256 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7f385d3239d0df073e2208fb0c3c243ef13553bb Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.date" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>date</refname>
<refpurpose>Форматирует временную метку Unix</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>date</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>timestamp</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Возвращает строку, отформатированную в соответствии с указанным в параметре <parameter>format</parameter> шаблоном. Используется метка времени, заданная параметром
<parameter>timestamp</parameter> (метка времени Unix), или текущее системное время, если
параметр <parameter>timestamp</parameter> не задан. Таким образом,
параметр <parameter>timestamp</parameter> является необязательным и по умолчанию равен
значению, возвращаемому функцией <function>time</function>.
</para>
<warning>
<para>
Метки времени Unix не обрабатывают часовые пояса. Используйте класс <classname>DateTimeImmutable</classname> и его метод
форматирования <methodname>DateTimeInterface::format</methodname> для форматирования информации о дате/времени с привязкой к часовому поясу.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>format</parameter></term>
<listitem>
<para>
Принятый формат <methodname>DateTimeInterface::format</methodname>.
</para>
<note>
<simpara>
Функция <function>date</function> всегда будет генерировать <literal>000000</literal> в качестве микросекунд,
поскольку она принимает параметр <type>int</type>, тогда как <methodname>DateTime::format</methodname> поддерживает микросекунды,
если <classname>DateTime</classname> был создан с микросекундами.
</simpara>
</note>
</listitem>
</varlistentry>
&date.timestamp.description;
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает отформатированную строку с датой.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&date.timezone.errors.description;
</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.0.0</entry>
<entry>
<parameter>timestamp</parameter> теперь допускает значение null.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Примеры использования функции <function>date</function></title>
<programlisting role="php">
<![CDATA[
<?php
// установка часового пояса по умолчанию.
date_default_timezone_set('UTC');
// выведет примерно следующее: Monday
echo date("l");
// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// выведет: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);
// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
]]>
</programlisting>
</example>
</para>
<para>
Чтобы запретить распознавание символа как форматирующего, следует экранировать
его с помощью обратного слеша. Если экранированный символ также является форматирующей
последовательностью, то следует экранировать его повторно.
<example>
<title>Экранирование символов в функции <function>date</function></title>
<programlisting role="php">
<![CDATA[
<?php
// выведет примерно следующее: Wednesday the 15th
echo date('l \t\h\e jS');
?>
]]>
</programlisting>
</example>
</para>
<para>
Для вывода прошедших и будущих дат удобно использовать функции <function>date</function>
и <function>mktime</function>.
<example>
<title>Пример совместного использования функций <function>date</function> и <function>mktime</function></title>
<programlisting role="php">
<![CDATA[
<?php
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
?>
]]>
</programlisting>
</example>
<note>
<para>
Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке
времени, поскольку позволяет при необходимости гибко осуществить переход на
летнее/зимнее время.
</para>
</note>
</para>
<para>
Ещё несколько примеров использования функции <function>date</function>. Важно отметить,
что следует экранировать все символы, которые необходимо оставить без изменений. Это
справедливо и для тех символов, которые в текущей версии PHP не распознаются как
форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании
управляющих последовательностей (например, \n) следует использовать одинарные кавычки.
<example>
<title>Форматирование с использованием <function>date</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся в часовом поясе Mountain Standard Time (MST)
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>
]]>
</programlisting>
</example>
</para>
<para>
Для форматирования дат на других языках вместо функции <function>date</function>
можно использовать метод <methodname>IntlDateFormatter::format</methodname>.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Для получения метки времени из строкового представления даты можно воспользоваться
функцией <function>strtotime</function>. Кроме того, некоторые базы данных имеют
собственные функции для преобразования внутреннего представления даты в метку времени
(например, функция MySQL <link xlink:href="&url.mysql.docs.date;">UNIX_TIMESTAMP</link>).
</para>
</note>
<tip>
<para>
Временную метку начала запроса
можно получить из поля <varname>$_SERVER['REQUEST_TIME']</varname>.
</para>
</tip>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>DateTimeImmutable::__construct</methodname></member>
<member><methodname>DateTimeInterface::format</methodname></member>
<member><function>gmdate</function></member>
<member><function>idate</function></member>
<member><function>getdate</function></member>
<member><function>getlastmod</function></member>
<member><function>mktime</function></member>
<member><methodname>IntlDateFormatter::format</methodname></member>
<member><function>time</function></member>
<member><link linkend="datetimeinterface.constants.types">Предопределённые константы даты и времени</link></member>
</simplelist>
</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
-->