PHP поддерживает функции даты для обработки даты и времени для реализации и предоставляет метод для преобразования удобочитаемых дат в Unix Timestamp. Один из таких методов — strtotime (). Давайте посмотрим на это подробнее.
PHP strtotime ()
Strtotime () — это встроенная функция PHP String, которая используется для преобразования текстового описания даты и времени на английском языке в метку времени UNIX. Функция strtotime () принимает строковый параметр на английском языке, который представляет собой описание даты и времени.
Например, « now » относится к текущей дате в описание даты и времени на английском языке.
strtotime (time, now) ;
Параметры
Параметр времени указывает строку даты/времени.
Параметр now указывает метку времени, используемую для вычисления возвращаемого значения. Это необязательный параметр.
Поскольку время/дата не статичны, результат будет отличаться.
Пример
См. следующий код.
phpecho strtotime ("now"), " n"; echo strtotime ("10 сентября 1993 г."), " n"; echo strtotime ("+ 1 день"), " n"; echo strtotime ("+ 2 неделя"), " n"; echo strtotime ("+ 3 недели 2 дня 4 часа 11 секунд"), " n"; echo strtotime ("следующий четверг"), " n"; echo strtotime ("последнее воскресенье"), " n";
См. следующий вывод.
➜ pro php app.php156473398774761920015648203871565943587156673559815652224001564272000➜ pro
Получим текущую дату.
phpecho date ("Ymd", strtotime ("now"));
См. следующий вывод.
➜ pro php app.php2019-08-02 ➜ php
Давайте получим дату от окончания этого года до одного года в будущем.
phpecho date ("dmY", strtotime ("2019-12-25 +1 год"));
См. следующий результат.
➜ pro php app.php25-12-2020 ➜ pro
Хорошо, теперь давайте воспользуемся функцией str_replace ().
php $ timestamp = strtotime (str_replace ('/', '-', '19.02.2019 ')); echo $ timestamp;
См. вывод.
➜ pro php app.php1550534400 ➜ pro
PHP strtotime timezone
Хорошо, давайте получим метку времени Часовой пояс America/Los_Angeles .
Php $ dateStr = '2019-07-04'; $ timezone = 'America/Los_Angeles'; $ date = new DateTime ($ dateStr , new DateTimeZone ($ timezone)); $ timestamp = $ date-> format ('U'); echo $ timestamp;
Просмотреть вывод.
➜ pro php app.php1562223600 ➜ pro
Использование strtotime для преобразования английского текста в дату
См. следующий код, в котором мы используют функцию strtotime для преобразования английского текста в данные.
php $ textDate = "19 февраля 2004 г."; echo strtotime ($ textDate), " n"; echo date ("Ymd", strtotime ($ textDate)). " n ";
См. следующий вывод.
➜ pro php app.php10771488002004-02-19➜ pro
Итак, у нас есть преобразовал текст в целое число и действительную дату.
Давайте напечатаем дату следующего воскресенья с сегодняшней даты. Ваш результат может отличаться, так как ваша текущая дата будет другой.
Phpecho strtotime ("следующее воскресенье"), " n"; эхо-дата ("Г-м-д", strtotime ("следующее воскресенье")). " n";
См. вывод.
➜ pro php app.php15648768002019-08-04➜ pro
Strtotime ( ) не работает с форматом дд/мм/ГГГГ
Когда вы работаете над проектом, вы часто используете формат даты, который выглядит как дд// мм/ГГГГ .
Предположим, у вас есть дата в формате дд/мм/ГГГГ ; как вы можете преобразовать его в ГГГГ-мм-дд с помощью функции strtotime ()? Но когда вы примените к этому формату функцию strtotime () , она не сработает. Он работает только с форматом мм/дд/ГГГГ .
Даты в формате мм/дд/ГГГ или дд-мм-ГГГГ иллюстрируются разделителем между различными компонентами. Если в качестве разделителя используется косая черта (/), предполагается, что американский формат мм/дд/ГГГГ . Напротив, если разделителем является тире (-) или точка (.) , то европейский дд-мм-ГГГГ Предполагается формат .
См. следующий код.
//app.php $ date = '06/03/2021 '; $ date = str_replace ('/', '-', $ date); echo date ('Ym-d', strtotime ($ date));
Вывод
2021-03-06
Преобразование strtotime в дату и время в PHP
Заключение
Функция strtotime () анализирует текстовое текстовое datetime на английском языке в метку времени Unix ( количество секунд с 1 января 1970 г., 00:00:00 по Гринвичу).
Если год указан в двузначном формате, значения от 0 до 69 сопоставляются с 2000-2069 и значения между 70-100 отображаются на 1970-2000 гг.
Вам нужно быть осторожным с датами в форматах m/d/y или dmy; если разделителем является косая черта (/), то предполагается американский m/d/y.
Если разделителем является тире (-) или точка (.), то ожидается европейский формат d-m-y. Если мы хотим избежать потенциальных ошибок, по возможности используйте даты ГГГГ-ММ-ДД или date_create_from_format ().
При использовании «следующий месяц», «последний месяц», «+1 месяц» , «-1 месяц» или любое сочетание +/- X месяцев. Это даст неинтуитивно понятные результаты 30 и 31 января.
Наконец, пример использования функции PHP strtotime () закончен.