strtotime

(PHP 4, PHP 5, PHP 7, PHP 8)

strtotimeПреобразует текстовое представление даты на английском языке в метку времени Unix

Описание

strtotime(string $datetime, ?int $baseTimestamp = null): int|false

Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени 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().

Смотрите также