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().

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

To Top