mirror of
https://github.com/php/doc-ru.git
synced 2025-08-15 23:42:35 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@318111 c90b9560-bf6c-de11-be94-00142212c4b1
263 lines
10 KiB
XML
263 lines
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 3b488da02f95f88b77a07154b53c78626f9e9190 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><initializer>time()</initializer></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><link linkend="datetime.formats">Форматы даты и времени</link></member>
|
||
<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
|
||
--> |