Php как конвертировать дату

PHP
Работа с датами и временем

Используя strtotime() сочетании с date() вы можете анализировать различные текстовые описания на английском языке по датам:

// Gets the current date echo date("m/d/Y", strtotime("now")), "\n"; // prints the current date echo date("m/d/Y", strtotime("10 September 2000")), "\n"; // prints September 10, 2000 in the m/d/Y format echo date("m/d/Y", strtotime("-1 day")), "\n"; // prints yesterday's date echo date("m/d/Y", strtotime("+1 week")), "\n"; // prints the result of the current date + a week echo date("m/d/Y", strtotime("+1 week 2 days 4 hours 2 seconds")), "\n"; // same as the last example but with extra days, hours, and seconds added to it echo date("m/d/Y", strtotime("next Thursday")), "\n"; // prints next Thursday's date echo date("m/d/Y", strtotime("last Monday")), "\n"; // prints last Monday's date echo date("m/d/Y", strtotime("First day of next month")), "\n"; // prints date of first day of next month echo date("m/d/Y", strtotime("Last day of next month")), "\n"; // prints date of last day of next month echo date("m/d/Y", strtotime("First day of last month")), "\n"; // prints date of first day of last month echo date("m/d/Y", strtotime("Last day of last month")), "\n"; // prints date of last day of last month 

Преобразование даты в другой формат

Простейший способ конвертировать один формат даты в другой — использовать strtotime() с date() . strtotime() преобразует дату в strtotime() Unix . Эта временная метка Unix затем может быть передана date() для преобразования ее в новый формат.

$timestamp = strtotime('2008-07-01T22:35:17.02'); $new_date_format = date('Y-m-d H:i:s', $timestamp); 
$new_date_format = date('Y-m-d H:i:s', strtotime('2008-07-01T22:35:17.02')); 

Имейте в виду, что strtotime() требует, чтобы дата была в допустимом формате . Невозможность предоставить допустимый формат приведет к тому, что strtotime() false, что приведет к тому, что ваша дата будет равна 1969-12-31.

Читайте также:  Модели линейной регрессии питон

Использование DateTime()

Начиная с PHP 5.2, PHP предложил класс DateTime() который предлагает нам более мощные инструменты для работы с датами (и временем). Мы можем переписать вышеуказанный код с помощью DateTime() следующим образом:

$date = new DateTime('2008-07-01T22:35:17.02'); $new_date_format = $date->format('Y-m-d H:i:s'); 

Работа с отметками времени Unix

date() принимает временную метку Unix в качестве ее второго параметра и возвращает вам форматированную дату:

$new_date_format = date('Y-m-d H:i:s', '1234567890'); 

DateTime () работает с отметками времени Unix, добавляя @ перед меткой времени:

$date = new DateTime('@1234567890'); $new_date_format = $date->format('Y-m-d H:i:s'); 

Если временная метка у вас есть в миллисекундах (она может закончиться на 000 и / или отметка времени составляет тринадцать символов), вам нужно будет преобразовать ее в несколько секунд, прежде чем вы сможете преобразовать ее в другой формат. Есть два способа сделать это:

Обрезка последних трех цифр может быть достигнута несколькими способами, но использование substr() является самым простым:

$timestamp = substr('1234567899000', -3); 

Вы также можете преобразовать метку времени в секундах, разделив ее на 1000. Поскольку временная метка слишком велика для 32-битных систем для математики, вам нужно будет использовать библиотеку BCMath для выполнения математики в виде строк:

$timestamp = bcdiv('1234567899000', '1000'); 

Чтобы получить strtotime() времени Unix, вы можете использовать strtotime() которая возвращает strtotime() времени Unix:

$timestamp = strtotime('1973-04-18'); 

С помощью DateTime () вы можете использовать DateTime::getTimestamp()

$date = new DateTime('2008-07-01T22:35:17.02'); $timestamp = $date->getTimestamp(); 

Если вы используете PHP 5.2, вы можете использовать опцию форматирования U :

$date = new DateTime('2008-07-01T22:35:17.02'); $timestamp = $date->format('U'); 

Работа с нестандартными и неоднозначными форматами дат

К сожалению, не все даты, с которыми разработчик должен работать, находятся в стандартном формате. К счастью, PHP 5.3 предоставил нам решение для этого. DateTime::createFromFormat() позволяет нам рассказать PHP о том, в каком формате используется строка даты, чтобы ее можно было успешно проанализировать в объект DateTime для дальнейших манипуляций.

$date = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM'); $new_date_format = $date->format('Y-m-d H:i:s'); 

В PHP 5.4 мы получили возможность сделать доступ к члену класса при создании экземпляра, который позволяет нам превратить наш код DateTime() в однострочный:

$new_date_format = (new DateTime('2008-07-01T22:35:17.02'))->format('Y-m-d H:i:s'); 

К сожалению, это не работает с DateTime::createFromFormat() .

Читайте также:  Css linear gradient плавное

Использование предопределенных констант для формата даты

Мы можем использовать предопределенные константы для формата date() в date() вместо обычных строк формата даты с PHP 5.1.0.

Доступны предопределенные константы формата даты

DATE_ATOM — Atom (2016-07-22T14: 50: 01 + 00: 00)

DATE_COOKIE — HTTP Cookies (пятница, 22-Jul-16 14:50:01 UTC)

DATE_RSS — RSS (пт, 22 июл 2016 14:50:01 +0000)

DATE_W3C — Консорциум World Wide Web (2016-07-22T14: 50: 01 + 00: 00)

DATE_ISO8601 — ISO-8601 (2016-07-22T14: 50: 01 + 0000)

DATE_RFC822 — RFC 822 (пт, 22 июл 16 14:50:01 +0000)

DATE_RFC850 — RFC 850 (пятница, 22-июл-16 14:50:01 UTC)

DATE_RFC1036 — RFC 1036 (пт, 22 июл 16 14:50:01 +0000)

DATE_RFC1123 — RFC 1123 (пт, 22 июл 2016 14:50:01 +0000)

DATE_RFC2822 — RFC 2822 (пт, 22 июл 2016 14:50:01 +0000)

DATE_RFC3339 — То же, что DATE_ATOM (2016-07-22T14: 50: 01 + 00: 00)

Примеры использования

Это выведет: Пт, 22 июл 16 14:50:01 +0000

echo date(DATE_ATOM,mktime(0,0,0,8,15,1947)); 

Это будет выводить: 1947-08-15T00: 00: 00 + 05: 30

Получение разницы между двумя датами / временем

Наиболее целесообразным способом является использование класса DateTime .

diff($twoYearsAgo); // $diff->y contains the difference in years between the two dates $yearsDiff = $diff->y; // $diff->m contains the difference in minutes between the two dates $monthsDiff = $diff->m; // $diff->d contains the difference in days between the two dates $daysDiff = $diff->d; // $diff->h contains the difference in hours between the two dates $hoursDiff = $diff->h; // $diff->i contains the difference in minutes between the two dates $minsDiff = $diff->i; // $diff->s contains the difference in seconds between the two dates $secondsDiff = $diff->s; // Total Days Diff, that is the number of days between the two dates $totalDaysDiff = $diff->days; // Dump the diff altogether just to get some details ;) var_dump($diff); 

Кроме того, сравнение двух дат намного проще, просто используйте операторы сравнения , например:

 $twoYearsAgo); // prints bool(true) var_dump($twoYearsAgo > $now); // prints bool(false) var_dump($twoYearsAgo  
  • Начало работы с PHP
  • APCu
  • BC Math (бинарный калькулятор)
  • Imagick
  • IMAP
  • JSON
  • Loops
  • PDO
  • PHP MySQLi
  • php mysqli affected rows возвращает 0, когда он должен возвращать положительное целое число
  • PHP Встроенный сервер
  • PHPDoc
  • PSR
  • SimpleXML
  • SQLite3
  • Streams
  • URL-адрес
  • UTF-8,
  • WebSockets
  • XML
  • YAML в PHP
  • Автозагрузка грунтовки
  • Альтернативный синтаксис для структур управления
  • Анализ HTML
  • Асинхронное программирование
  • Аутентификация HTTP
  • Безопасность
  • Буферизация вывода
  • Вклад в PHP Core
  • Внедрение зависимости
  • Внесение изменений в Руководство по PHP
  • Волшебные константы
  • Волшебные методы
  • Вывод значения переменной
  • Выполнение по массиву
  • Генераторы
  • закрытие
  • Защитите Remeber Me
  • Интерфейс командной строки (CLI)
  • Использование cURL в PHP
  • Использование MongoDB
  • Использование Redis с PHP
  • Использование SQLSRV
  • Итерация массива
  • Как определить IP-адрес клиента
  • Как разбить URL-адрес
  • Класс Datetime
  • Классы и объекты
  • Клиент SOAP
  • Комментарии
  • Компилировать расширения PHP
  • Компиляция ошибок и предупреждений
  • Константы
  • Контрольные структуры
  • криптография
  • кэш
  • локализация
  • Манипулирование массивом
  • Манипуляции заголовков
  • Массивы
  • Машинное обучение
  • Менеджер зависимостей композитора
  • Многопоточное расширение
  • многопроцессорная обработка
  • Монго-PHP
  • Область переменных
  • Обработка изображений с помощью GD
  • Обработка исключений и отчетов об ошибках
  • Обработка нескольких массивов вместе
  • Обработка файлов
  • Общие ошибки
  • операторы
  • отладка
  • Отправка электронной почты
  • отражение
  • переменные
  • Переменные Superglobal PHP
  • Печенье
  • Поддержка Unicode в PHP
  • Пространства имен
  • Работа с датами и временем
  • Развертывание докеров
  • Регулярные выражения (regexp / PCRE)
  • Рекомендации
  • Рецепты
  • Розетки
  • Сервер SOAP
  • Сериализация
  • Сериализация объектов
  • сессии
  • Соглашения о кодировании
  • Создание PDF-файлов в PHP
  • Спектакль
  • Строковый анализ
  • Структуры данных SPL
  • Тестирование устройства
  • Тип жонглирования и нерегулярные проблемы сравнения
  • Тип подсказки
  • Типы
  • Установка в средах Linux / Unix
  • Установка среды PHP в Windows
  • Фильтры и функции фильтра
  • Форматирование строк
  • функции
  • Функции хеширования пароля
  • Функциональное программирование
  • Черты
  • Чтение данных запроса
  • Шаблоны проектирования

Источник

Оцените статью