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;
}
}
}
Если с даты прошел день, то выводится только время, далее дата с месяцем и годом.
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');