- date() – форматирование даты PHP
- Основные параметры шаблона
- дд.мм.ггг (dd.mm.yyyy)
- гггг-мм-дд (yyyy.mm.dd)
- Вывод даты с русскими месяцами
- Версия со сокращенными месяцами
- PHP: русские месяцы в функции date()
- Массивы с названиями русских месяцев
- Вывести на PHP месяц и день недели на русском
- С помощью функции setlocale()
- С помощью готового решения
- Datetime php русские месяцы
- Вывод русского названия месяца в дате обычного формата, например 12.03.2015
- Вывод даты на русском языке из unix timestamp формата, например 1437556706
date() – форматирование даты PHP
date($format, $timestamp) – форматирует дату/время по шаблону, где:
Результат работы функции зависит от настроек часового пояса, установить его можно следующем образом:
Основные параметры шаблона
Символ | Описание | Пример возвращаемого значения |
---|---|---|
День | ||
j | День месяца без ведущего нуля | от 1 до 31 |
d | День месяца, 2 цифры с ведущим нулём | от 01 до 31 |
l | Полное наименование дня недели | от Sunday до Saturday |
D | День недели, 3 символа | от Mon до Sun |
z | Порядковый номер дня в году | От 0 до 365 |
Неделя | ||
N | Порядковый номер дня недели | от 1 (понедельник) до 7 (воскресенье) |
W | Порядковый номер недели года | Например: 42 (42-я неделя года) |
Месяц | ||
n | Порядковый номер месяца без ведущего нуля | от 1 до 12 |
m | Порядковый номер месяца с ведущим нулём | от 01 до 12 |
F | Полное название месяца | от January до December |
M | Сокращенное наименование месяца, 3 символа | от Jan до Dec |
t | Количество дней в месяце | от 28 до 31 |
Год | ||
Y | Год, 4 цифры | 2019 |
y | Год, 2 цифры | 19 |
Время | ||
g | Часы в 12-часовом формате без ведущего нуля | от 1 до 12 |
h | Часы в 12-часовом формате с ведущим нулём | от 01 до 12 |
G | Часы в 24-часовом формате без ведущего нуля | от 0 до 23 |
H | Часы в 24-часовом формате с ведущим нулём | от 00 до 23 |
i | Минуты с ведущим нулём | от 00 до 59 |
s | Секунды с ведущим нулём | от 00 до 59 |
v | Миллисекунды | 123 |
Полная дата/время | ||
c | Дата в формате ISO 8601 | 2004-02-12T15:19:21+00:00 |
r | Дата в формате RFC 2822 | Thu, 21 Dec 2000 16:01:07 +0200 |
дд.мм.ггг (dd.mm.yyyy)
Самый распространенные форматы: dd.mm.yyyy и dd.mm.yyyy hh:ss .
echo date('d.m.Y'); // 23.07.2023 echo date('d.m.Y H:i'); // 23.07.2023 15:26 echo date('d.m.Y H:i:s'); // 23.07.2023 15:26:11
гггг-мм-дд (yyyy.mm.dd)
Используется в MySQL тип поля DATE.
Вывод даты с русскими месяцами
function date_ru($timestamp, $show_time = false) < if (empty($timestamp)) < return '-'; >else < $now = explode(' ', date('Y n j H i')); $value = explode(' ', date('Y n j H i', $timestamp)); if ($now[0] == $value[0] && $now[1] == $value[1] && $now[2] == $value[2]) < return 'Сегодня в ' . $value[3] . ':' . $value[4]; >else < $month = array( '', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ); $out = $value[2] . ' ' . $month[$value[1]] . ' ' . $value[0]; if ($show_time) < $out .= ' в ' . $value[3] . ':' . $value[4]; >return $out; > > >
echo date_ru(time() - 60); // Сегодня в 19:43 echo date_ru(1549682408); // 9 февраля 2019 echo date_ru(1549682408, true); // 9 февраля 2019 в 06:20 echo date_ru(0); // -
Версия со сокращенными месяцами
function date_ru($timestamp, $show_time = false) < if (empty($timestamp)) < return '-'; >else < $now = explode(' ', date('Y n j H i')); $value = explode(' ', date('Y n j H i', $timestamp)); if ($now[0] == $value[0] && $now[1] == $value[1] && $now[2] == $value[2]) < return 'Сегодня в ' . $value[3] . ':' . $value[4]; >else < $month = array( '', 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек' ); $out = $value[2] . ' ' . $month[$value[1]] . ' ' . $value[0]; if ($show_time) < $out .= ' в ' . $value[3] . ':' . $value[4]; >return $out; > > >
echo date_ru(time() - 60); // Сегодня в 19:04 echo date_ru(1549682408); // 9 мар 2019 echo date_ru(1549682408, true); // 9 мар 2019 в 06:20 echo date_ru(0); // -
На многих хостингах не установлен часовой пояс, поэтому функция date() может работать некорректно. Задать его можно следующим образом: date_default_timezone_set(‘Europe/Moscow’);
PHP: русские месяцы в функции date()
Выражение date( ‘n’ ) возвращает порядковый номер месяца в году.
Массивы с названиями русских месяцев
$months = array( 1 => 'Январь' , 'Февраль' , 'Март' , 'Апрель' , 'Май' , 'Июнь' , 'Июль' , 'Август' , 'Сентябрь' , 'Октябрь' , 'Ноябрь' , 'Декабрь' ); $months = array( 1 => 'январь' , 'февраль' , 'март' , 'апрель' , 'май' , 'июнь' , 'июль' , 'август' , 'сентябрь' , 'октябрь' , 'ноябрь' , 'декабрь' );
$months = array( 1 => 'Января' , 'Февраля' , 'Марта' , 'Апреля' , 'Мая' , 'Июня' , 'Июля' , 'Августа' , 'Сентября' , 'Октября' , 'Ноября' , 'Декабря' ); $months = array( 1 => 'января' , 'февраля' , 'марта' , 'апреля' , 'мая' , 'июня' , 'июля' , 'августа' , 'сентября' , 'октября' , 'ноября' , 'декабря' );
$months = array( 1 => 'Январю' , 'Февралю' , 'Марту' , 'Апрелю' , 'Маю' , 'Июню' , 'Июлю' , 'Августу' , 'Сентябрю' , 'Октябрю' , 'Ноябрю' , 'Декабрю' ); $months = array( 1 => 'январю' , 'февралю' , 'марту' , 'апрелю' , 'маю' , 'июню' , 'июлю' , 'августу' , 'сентябрю' , 'октябрю' , 'ноябрю' , 'декабрю' );
$months = array( 1 => 'Январём' , 'Февралём' , 'Мартом' , 'Апрелем' , 'Маем' , 'Июнем' , 'Июлем' , 'Августом' , 'Сентябрём' , 'Октябрём' , 'Ноябрём' , 'Декабрём' ); $months = array( 1 => 'январём' , 'февралём' , 'мартом' , 'апрелем' , 'маем' , 'июнем' , 'июлем' , 'августом' , 'сентябрём' , 'октябрём' , 'ноябрём' , 'декабрём' );
$months = array( 1 => 'Январе' , 'Феврале' , 'Марте' , 'Апреле' , 'Мае' , 'Июне' , 'Июле' , 'Августе' , 'Сентябре' , 'Октябре' , 'Ноябре' , 'Декабре' ); $months = array( 1 => 'январе' , 'феврале' , 'марте' , 'апреле' , 'мае' , 'июне' , 'июле' , 'августе' , 'сентябре' , 'октябре' , 'ноябре' , 'декабре' );
Вывести на PHP месяц и день недели на русском
Довольно часто приходится сталкиваться с выводом названий месяцев и дней недели по-русски. При чем в различных вариантах, к примеру с полным названием или сокращенным, с большой буквы или с маленькой.
Можно воспользоваться одним из этих 2 вариантов для вывода даты на русском. Мне больше нравится тот, где больше кода, так как в нем можно изменить текстовые названия как угодно под свою задачу.
С помощью функции setlocale()
Для корректной работы в системе должна быть установлена соответствующая локаль. Из плюсов: несколько строк кода. Из минусов: сложнее переделать названия под себя.
Что нужно знать о ставках на CS:GO beting-rating.ru
С помощью готового решения
Суть решения в том, что название выводится по номеру ключа в массиве, совпадающего с порядковым номером месяца или днём недели. Данный пример можно оформить в функции для множественного использования на странице. Из плюсов: названия можно переделать как вам угодно. Из минусов: больше строк кода, чем в примере выше.
'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля', 5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа', 9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря' ); echo $monthes[(date('n', strtotime($date)))]; // Вывод дня недели $days = array( 'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' ); echo $days[(date('w', strtotime($date)))]; ?>
Подборка бесплатных IT-курсов и вебинаров от Skillbox.
Бесплатные IT-курсы, нужно только пройти онлайн-тест здесь
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Datetime php русские месяцы
Иногда на страницах сайта появляется необходимость вывести не просто цифровую дату типа 23.07.2015, а сразу русскую дату, в которой месяц будет написан русским названием. И будет она выглядеть уже вот так 23 июля 2015.
Вы спросите: «Зачем это нужно?». А нужно это в первую очередь для лучшего визуального восприятия даты, так как первый уже стандартный для многих сайтов формат даты из одних только цифр с точками воспринимается намного хуже, чем когда день и год разделены словом-названием месяца. В этом случае можно намного быстрее понять, от какого эта дата месяца и года.
Но, что самое интересное, стандартная и довольно полезная дата-временная функция date() может выводить название месяца только на английском языке (от January до December), то есть воспользоваться параметром F данной функции нам не подойдет.
Тут нужен другой подход, заключающийся в подстановке заместо численного значения месяца (от 1 до 12) русского слова-обозначения этого месяца. На словах звучит сложновато, поэтому предлагаю в качестве примера вывести таким способом текущую дату :
//список месяцев с названиями для замены $_monthsList = array(".01." => "января", ".02." => "февраля", ".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", ".07." => "июля", ".08." => "августа", ".09." => "сентября", ".10." => "октября", ".11." => "ноября", ".12." => "декабря"); //текущая дата $currentDate = date("d.m.Y"); //переменная $currentDate теперь хранит текущую дату в формате 22.07.2015 //но так как наша задача - вывод русской даты, //заменяем число месяца на название: $_mD = date(".m."); //для замены $currentDate = str_replace($_mD, " ".$_monthsList[$_mD]." ", $currentDate); //теперь в переменной $currentDate хранится дата в формате 22 июня 2015
Вывести один лишь только текущий месяц на русском языке еще проще:
$_monthsList = array( "1"=>"Январь","2"=>"Февраль","3"=>"Март", "4"=>"Апрель","5"=>"Май", "6"=>"Июнь", "7"=>"Июль","8"=>"Август","9"=>"Сентябрь", "10"=>"Октябрь","11"=>"Ноябрь","12"=>"Декабрь"); $month = $_monthsList[date("n")]; echo $month; //выведет, например, для 7 месяца "Июль"
Ну и для того, что бы было под рукой (это же все-таки заметка), рассмотрим еще несколько реальных примеров, с которыми, обычно, и приходится сталкиваться на практике. Для удобства сделаем их подзаголовками.
Вывод русского названия месяца в дате обычного формата, например 12.03.2015
Данный случай в принципе почти одинаков с описанным чуть выше, разница только в том, что $currentDate будет изначально задано по коду ранее. А выглядеть это будет так:
//текущая дата $currentDate = '12.03.2015'; //может быть присвоена из другой переменной //список месяцев с названиями для замены $_monthsList = array( ".01." => "января", ".02." => "февраля", ".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", ".07." => "июля", ".08." => "августа", ".09." => "сентября", ".10." => "октября", ".11." => "ноября", ".12." => "декабря" ); //Наша задача - вывод русской даты, //поэтому заменяем число месяца на название: $_mD = date(".m.", strtotime($currentDate)); //для замены $currentDate = str_replace($_mD, " ".$_monthsList[$_mD]." ", $currentDate); //теперь в переменной $currentDate хранится дата в формате 12 марта 2015
В итоге, после небольших манипуляций, мы получаем правильную дату на выходе.
Вывод даты на русском языке из unix timestamp формата, например 1437556706
Обработка такой даты является самой интересной, так как тут придется скомбинировать приемы изменения текущей даты и какой-то определенной даты в цифровом формате. А именно: нам нужно вначале получить дату из метки времени (unix timestamp), а потом в этой дате заменить число месяца на русское название месяца. Сделать это можно вот так:
//текущая дата в формате Unix TimeStamp $_timestampDate = '1437556706'; //может быть присвоена из другой переменной //переводим в нормальную дату $currentDate = date("d.m.Y", $_timestampDate); //из 1437556706 в 22.07.2015 //список месяцев с названиями для замены $_monthsList = array( ".01." => "января", ".02." => "февраля", ".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", ".07." => "июля", ".08." => "августа", ".09." => "сентября", ".10." => "октября", ".11." => "ноября", ".12." => "декабря" ); //Наша задача - вывод русской даты, //поэтому заменяем число месяца на название: $_mD = date(".m.", $_timestampDate); //для замены $currentDate = str_replace($_mD, " ".$_monthsList[$_mD]." ", $currentDate); //теперь в переменной $currentDate хранится дата в формате 22 июня 2015
В итоге мы получили нужный нам формат даты из метки времени. Все как и хотели.
Кстати, при работе с timestamp мне не плохо помогает мой же веб-инструмент Unix TimeStamp конвертер. Это бесплатная штука, пользуйтесь на здоровье. Там так же можно подробнее узнать про эту самую Unix метку время. Все для Вас =)
Виталий Жуков
28.11.2019