array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.strtotime.php', 1 => 'strtotime', ), 'up' => array ( 0 => 'ref.datetime.php', 1 => 'Функции даты и времени', ), 'prev' => array ( 0 => 'function.strptime.php', 1 => 'strptime', ), 'next' => array ( 0 => 'function.time.php', 1 => 'time', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/datetime/functions/strtotime.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Преобразовывает текстовое представление даты на английском языке в метку времени Unix
Первым параметром функция ожидает строку с датой на английском языке, которая
будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 1970
года 00:00:00 UTC) относительно метки времени, переданной
в параметр baseTimestamp
, или текущего времени, если аргумент
baseTimestamp
опущен.
Разбор строки даты определён в разделе «Форматы даты и времени»
и содержит несколько тонких вопросов. Знание форматов упростит работу с функцией.
Метка времени Unix, которую возвращает функция, не содержит данных о часовых поясах. Для расчётов с датой/временем обращаются к инструменту с бо́льшими способностями — классу DateTimeImmutable.
Каждый параметр функции будет использовать часовой пояс по умолчанию, если он не указан в нём. Соблюдают осторожность и не указывают разные метки времени в параметрах, если только так не было задумано. О способах установки часового пояса по умолчанию рассказано в описании функции date_default_timezone_get().
datetime
Строка даты и времени. Объяснение корректных форматов дано в разделе Форматы даты и времени.
baseTimestamp
Метка времени, которую функция будет использовать как основу для вычисления относительных дат.
Возвращает метку времени в случае успешного выполнения, иначе false
.
Каждый вызов к функциям даты и времени при неправильных настройках часового пояса
сгенерирует ошибку уровня E_WARNING
,
если часовой пояс некорректный. Смотрите также описание функции
date_default_timezone_set().
Версия | Описание |
---|---|
8.0.0 |
Теперь параметр baseTimestamp может принимать значение null.
|
Пример #1 Пример использования функции strtotime()
<?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";
Пример #2 Проверка ошибок
<?php
$str = 'Not Good';
if (($timestamp = strtotime($str)) === false) {
echo "Строка ($str) недопустима";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
Замечание:
«Относительная» дата в данном случае также означает, что если конкретный компонент метки даты/времени не указан, он будет взят дословно из параметра
baseTimestamp
. То есть, вызовstrtotime('February')
, если его запустить 31 мая 2022 года, будет интерпретирован как31 февраля 2022
, что перенесётся в метку времени3 марта
(в високосный год будет2 марта
). Вызовstrtotime('1 February')
илиstrtotime('first day of February')
не допустит этой проблемы.
Замечание:
Если количество лет указано двумя цифрами, то значения 00-69 будут считаться 2000-2069, а 70-99 — 1970-1999. Замечания ниже рассказывают о возможных различиях на 32-битных системах (допустимые даты заканчиваются 2038-01-19 03:14:07).
Замечание:
Корректный диапазон меток времени — это обычно даты с 13 декабря 1901 20:45:54 UTC по 19 января 2038 03:14:07 UTC. (Эти даты соответствуют крайним значениям 32-битного целого числа со знаком.)
В 64-битных версиях PHP корректный диапазон меток времени практически бесконечен, так как 64 битов хватит для представления около 293 миллиардов лет в обоих направлениях.
Замечание:
Использовать эту функцию для математических операций не рекомендовано. Лучше пользоваться методами DateTime::add() и DateTime::sub().