Вывод даты с русскими месяцами

Вывод даты с русскими месяцами

PHP-функция для вывода даты в привычном формате из метки unix timestamp.

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;
		}
	}
}
PHP

Если с даты прошел день, то выводится только время, далее дата с месяцем и годом.

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);                 // -
PHP

Версия со сокращенными месяцами

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;
		}
	}
}
PHP
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);                 // -
PHP

На многих хостингах не установлен часовой пояс, поэтому функция date() может работать некорректно. Задать его можно следующим образом:

date_default_timezone_set('Europe/Moscow');

12.02.2019, обновлено 12.10.2021
6809

Комментарии

, чтобы добавить комментарий.

Другие публикации

Календарь на PHP
PHP-класс для вывода календаря на месяц, год или любой другой интервал с возможностью выделить отдельные даты и вывести к ним подсказки.
33735
+12
Автоматическая установка временной зоны у пользователя
date_default_timezone_set устанавливает часовой пояс, который по умолчанию используется всеми дата/время функциями.
6046
+4
Генерация случайных буквенно-цифровых кодов в PHP
Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и...
12296
+4
Генерация счета на оплату PDF PHP
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
69730
+34
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
19938
+2
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
74538
+24