1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/datetime/datetimeinterface/diff.xml
2023-12-09 14:59:52 +03:00

228 lines
8.0 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: dbbcd32d72e4c9af14e9f3b940edbedfb54f965e 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>$this</parameter> или <parameter>$originObject</parameter>)
приводит к объекту <parameter>$targetObject</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");
$targedTime = new DateTimeImmutable("2023-12-31 UTC");
$interval = $originalTime->diff($targedTime);
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");
$targedTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
$interval = $originalTime->diff($targedTime);
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
-->