1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/datetime/datetimeinterface/diff.xml
2024-09-02 17:36:34 +03:00

251 lines
8.2 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: 81908751c5787d433937a548235ca45fe3256841 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="datetime.diff" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>DateTimeInterface::diff</refname>
<refname>DateTimeImmutable::diff</refname>
<refname>DateTime::diff</refname>
<refname>date_diff</refname>
<refpurpose>Возвращает разницу между двумя объектами DateTime</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<methodsynopsis role="DateTimeInterface">
<modifier>public</modifier> <type>DateInterval</type><methodname>DateTimeInterface::diff</methodname>
<methodparam><type>DateTimeInterface</type><parameter>targetObject</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>absolute</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTimeImmutable">
<modifier>public</modifier> <type>DateInterval</type><methodname>DateTimeImmutable::diff</methodname>
<methodparam><type>DateTimeInterface</type><parameter>targetObject</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>absolute</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTime">
<modifier>public</modifier> <type>DateInterval</type><methodname>DateTime::diff</methodname>
<methodparam><type>DateTimeInterface</type><parameter>targetObject</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>absolute</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>DateInterval</type><methodname>date_diff</methodname>
<methodparam><type>DateTimeInterface</type><parameter>baseObject</parameter></methodparam>
<methodparam><type>DateTimeInterface</type><parameter>targetObject</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>absolute</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<para>
Метод возвращает разницу между двумя объектами <classname>DateTimeInterface</classname>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>datetime</parameter></term>
<listitem>
<para>
Дата, с которой требуется сравнение.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>absolute</parameter></term>
<listitem>
<para>
Логическое значение, которое определяет, требуется ли принудительно переводить интервал в абсолютную величину.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Метод возвращает объект <classname>DateInterval</classname>, который представляет
разницу между двумя датами.
</para>
<para>
Значение, которое возвращает метод, точнее представляет интервал времени, с которым получают целевой
объект <parameter>$targetObject</parameter>, когда применяют интервал
к исходному объекту <parameter>$this</parameter> или <parameter>$originObject</parameter>.
Процесс получится обратить не каждый раз.
</para>
<para>
Метод учитывает смену часовых поясов и поэтому иногда возвращает интервал
<literal>24 hours and 30 minutes</literal>, как в одном из примеров.
Сначала объекты <parameter>$this</parameter> или <parameter>$baseObject</parameter>
и <parameter>$targetObject</parameter> преобразовывают к часовому поясу UTC,
когда требуется рассчитывать абсолютное время.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>
Пример использования метода <methodname>DateTimeInterface::diff</methodname> с диапазоном дат
</title>
<para>
Значение, которое возвращает метод, — точное количество времени, которое требуется
для перехода от времени объекта <parameter>$this</parameter> ко времени объекта <parameter>$targetObject</parameter>.
Поэтому сравнение 1 января с 31 декабря возвращает 364 дня, а не 365 дней
(для невисокосных годов).
</para>
<programlisting role="php">
<![CDATA[
<?php
$originalTime = new DateTimeImmutable("2023-01-01 UTC");
$targetTime = new DateTimeImmutable("2023-12-31 UTC");
$interval = $originalTime->diff($targetTime);
echo "Полных дней: ", $interval->format("%a"), "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Полных дней: 364
]]>
</screen>
</example>
<example>
<title>Пример использования метода <function>DateTimeImmutable::diff</function></title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
$origin = new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a дней');
?>
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
$origin = date_create('2009-10-11');
$target = date_create('2009-10-13');
$interval = date_diff($origin, $target);
echo $interval->format('%R%a дней');
?>
]]>
</programlisting>
&examples.outputs;
<screen>
<![CDATA[
+2 days
]]>
</screen>
</example>
<example>
<title>
Пример использования метода <methodname>DateTimeInterface::diff</methodname>
при переходе на летнее время
</title>
<programlisting role="php">
<![CDATA[
<?php
$originalTime = new DateTimeImmutable("2021-10-30 09:00:00 Europe/London");
$targetTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
$interval = $originalTime->diff($targetTime);
echo $interval->format("%H:%I:%S (Полных дней: %a)"), "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
24:30:00 (Полных дней: 0)
]]>
</screen>
</example>
<example>
<title>Сравнение объектов <classname>DateTime</classname></title>
<note>
<para>
Объекты <classname>DateTimeImmutable</classname> и
<classname>DateTime</classname> можно сравнивать
<link linkend="language.operators.comparison">операторами сравнения</link>.
</para>
</note>
<programlisting role="php">
<![CDATA[
<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(false)
bool(true)
bool(false)
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>DateInterval::format</function></member>
<member><function>DateTime::add</function></member>
<member><function>DateTime::sub</function></member>
</simplelist>
</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
-->