Files
php-doc-ru/reference/datetime/functions/strtotime.xml
Shein Alexey 36d63b29f8 Updated translation.
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@312984 c90b9560-bf6c-de11-be94-00142212c4b1
2011-07-06 06:10:50 +00:00

263 lines
10 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: a0699b136ecef359d2008a942ef03e2771945377 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<!-- $Revision$ -->
<!-- splitted from ./en/functions/datetime.xml, last change in rev 1.8 -->
<refentry xml:id="function.strtotime" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>strtotime</refname>
<refpurpose>Преобразует текстовое представление даты на английском языке в метку времени Unix</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>strtotime</methodname>
<methodparam><type>string</type><parameter>time</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>now</parameter></methodparam>
</methodsynopsis>
<simpara>
Первым параметром функции должна быть строка с датой на английском
языке, которая будет преобразована в метку времени Unix (количество
секунд, прошедших с 1 января 00:00:00 UTC) относительно метки
времени, переданной в <parameter>now</parameter>, или текущего
времени, если аргумент <parameter>now</parameter> опущен.
</simpara>
<para>
Для вычисления временной метки эта функция использует переменную окружения <envar>TZ</envar> (если
она доступна). Начиная с версии PHP 5.1.0 появились более простые
способы указания часового пояса, используемого во всех функциях
даты/времени. Объяснение данного процесса дано на странице функции
<function>date_default_timezone_get</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>time</parameter></term>
<listitem>
<para>&date.formats.parameter;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>now</parameter></term>
<listitem>
<para>
Временная метка, используемая в качестве базы для вычисления
относительных дат.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает временную метку в случае успеха, иначе возвращается &false;.
До версии PHP 5.1.0 в случае ошибки эта функция возвращала <literal>-1</literal>.
</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>5.3.0</entry>
<entry>
До версии PHP 5.3.0, <literal>24:00</literal> не являлся корректным
форматом и при его использовании <function>strtotime</function>
возвращала &false;.
</entry>
</row>
<row>
<entry>5.2.7</entry>
<entry>
В версиях PHP 5 до 5.2.7, при запросе временной метки дня недели,
являвшимся первым днем месяца, ошибочно прибавлялась одна неделя.
Эта ошибка была исправлена в версии 5.2.7 и следующих за ней версиях.
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
Теперь в случае ошибки возвращает &false;, ранее возвращалась
<literal>-1</literal>.
</entry>
</row>
&date.timezone.errors.changelog;
<row>
<entry>5.0.2</entry>
<entry>
В PHP 5 до версии 5.0.2, <literal>"now"</literal> и другие
относительные времена вычислялись неверно относительно
полуночи текущего дня. Это отличается от поведения текущих
версий, где вычисление производится корректно относительно
текущего времени.
</entry>
</row>
<row>
<entry>5.0.0</entry>
<entry>
Стало возможным указывать микросекунды, но они не принимаются
во внимание и будут проигнорированы.
</entry>
</row>
<row>
<entry>4.4.0</entry>
<entry>
В версиях PHP до 4.4.0, фраза <literal>"next"</literal> некорректно
вычислялась как +2. Типичное решение этой проблемы - использовать
<literal>"+1"</literal>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>strtotime</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Проверка ошибок</title>
<programlisting role="php">
<![CDATA[
<?php
$str = 'Not Good';
// до версии PHP 5.1.0 вместо false необходимо было сравнивать со значением -1
if (($timestamp = strtotime($str)) === false) {
echo "Строка ($str) недопустима";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Если количество лет указано двумя цифрами, то значения 00-69
будут считаться 2000-2069, а 70-99 - 1970-1999. Смотрите также
замечания ниже о возможных различиях на 32-битных системах
(допустимые даты заканчиваются 2038-01-19 03:14:07).
</para>
</note>
<note>
<para>
Корректным диапазоном временных меток обычно являются даты с 13 декабря
1901 20:45:54 UTC по 19 января 2038 03:14:07 UTC. (Эти даты
соответствуют минимальному и максимальному значению 32-битового
знакового целого).
Кроме того, не все платформы поддерживают отрицательные метки
времени, поэтому поддерживаемый диапазон дат может быть ограничен
Эпохой Unix. Это означает, что даты ранее 1 января 1970 г. не
будут работать в Windows, некоторых дистрибутивах Linux и
нескольких других операционных системах.
Тем не менее, в версиях PHP 5.1 и старше это ограничено было снято.
</para>
<para>
В 64-битных версиях PHP корректный диапазон временных меток
фактически бесконечен, так как 64 битов хватит для представления
приблизительно 293 миллиарда лет в обоих направлениях.
</para>
</note>
<note>
<para>
Даты в формате <literal>m/d/y</literal> или <literal>d-m-y</literal>
разрешают неоднозначность с помощью анализа разделителей их элементов:
если разделителем является слэш (<literal>/</literal>), то дата
интерпретируется в американском формате <literal>m/d/y</literal>,
если же разделителем является дефис (<literal>-</literal>) или точка
(<literal>.</literal>), то подразумевается использование европейского
формата<literal>d-m-y</literal>.
</para>
<para>
Чтобы избежать потенциальной неоднозначности, рекомендуется
использовать даты в формате стандарта ISO 8601
(<literal>YYYY-MM-DD</literal>) либо пользоваться функцией
<methodname>DateTime::createFromFormat</methodname>, там где это
возможно.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>DateTime::createFromFormat</methodname></member>
<member><function>checkdate</function></member>
<member><function>strptime</function></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
-->