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

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, обновлено 19.01.2020

Комментарии

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

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

Список временных зон, совместимых с PHP
2694
0
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
25463
+17
Несколько вариантов как быстро организовать запись данных в лог-файл.
22289
+4
В PHP 5.3 появился класс NumberFormatter для форматирования чисел и денежных единиц в нужной локали. На его основе была написана функция со склонением слова «рубль».
3760
+1
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
27308
+9
SSL сертификат можно получить с помощью контекста потоков (Stream Context), а разобрать его поможет функция...
1183
+4