Формат даты мы можем получить из поля <input type="date">
, однако он будет в формате гггг-мм-дд, т.е. 2024-01-25. Однако для вывода информации предпочтительнее будут другие форматы. Давайте посмотрим, как мы можем преобразовать формат даты в PHP.
Для начала маленький тест. Посмотрим, что выведет выбор даты в поле <input type="date">
:
Используем PHP-функции strtotime() и date()
В этой статье мы будем использовать функции PHP strtotime() и date() для преобразования формата даты и времени. Попробуем преобразовать формат даты несколькими способами.
Функция strtotime()
преобразует дату в секунды. После этого мы можем преобразовать секунды выбранной даты в любой формат с помощью функции date()
. Ниже приведены несколько примеров преобразований.
Пример 1. Преобразуем ГГГГ-ММ-ДД в ММ-ДД-ГГГГ
Для западного мира более характерным является формат даты в виде мм-дд-гггг ("01-25-2024") , поэтому здесь нам нужно изменить последовательность вывода данных:
1 2 3 4 | $origDate = "2024-01-25"; $newDate = date("m-d-Y", strtotime($origDate)); echo $newDate; |
Вывод: 01-25-2024
Пример 2. Преобразуем ГГГГ-ММ-ДД в ДД-ММ-ГГГГ
В "кириллическом мире" последовательность вывода данных - это дд-мм-гггг (25-01-2024). Преобразуем стандартный формат даты гггг-мм-дд (2024-01-25
) в нужный дд-мм-гггг
:
1 2 3 4 | $origDate = "2024-01-25"; $newDate = date("d-m-Y", strtotime($origDate)); echo $newDate; |
Вывод: 25-01-2024
Пример 3. Преобразуем ГГГГ-ММ-ДД в ДД.ММ.ГГГГ
По тому же принципу мы можем вывести дату с точками в формате дд.мм.гггг (25.01.2024), что является еще более популярным форматом:
1 2 3 | $origDate = "2024-01-25"; $newDate = date("d.m.Y", strtotime($origDate)); echo $newDate; |
Вывод: 25.01.2024
Пример 4. Преобразуем ГГГГ/ММ/ДД в ДД.ММ.ГГГГ.
Если у вас есть косые черты в формате даты, например "2024/01/25" (ГГГГ/ММ/ДД), и вам нужно преобразовать слэш в точки, а данные вывести в другой последовательности ("25.01.2024", т.е. ДД.ММ.ГГГГ), то сначала нужно использовать функцию str_replace()
, а затем один из вариантов выше:
1 2 3 4 5 6 | $origDate = "2024/01/25"; $date = str_replace('/', '-', $origDate ); echo $date.'<br>'; $newDate = date("d.m.Y", strtotime($date)); echo $newDate; |
Вывод:
25.01.2024
Используем метод DateTime::createFromFormat
Класс DateTime предназначен для управления датой и временем в PHP. Его метод createFromFormat
мы можем использовать для преобразования формата даты. В примере ниже мы будем менять формат гггг-мм-дд на дд.мм.гггг:
1 2 3 | $origDate = "2024-09-14"; $newDate = DateTime::createFromFormat('Y-m-d', $origDate)->format('d-m-Y'); echo $newDate; |
Вывод: 14-09-2024
Все остальные форматы вы можете получить, подставив нужный вариант вывода в конце.
Используем функцию date_parse_from_format()
Это самый сложный способ преобразования даты в нужный формат, но вдруг вам понадобится и такой вариант. Функция date_parse_from_format() возвращает массив, содержащий информацию о дате. Мы берем из него только то, что нужно:
1 2 3 4 5 6 | <?php $origDate = "2024-07-22"; $newDate = date_parse_from_format("Y-m-d", $origDate); echo implode('.', [$newDate['day'],$newDate['month'],$newDate['year']]); ?> |
Вывод: 22.7.2024
О том, как получить текущую дату в PHP, читайте в отдельной статье.