Skip to content

Instantly share code, notes, and snippets.

@insideone
Last active April 19, 2023 12:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save insideone/4dccc34941462895511948efb4071239 to your computer and use it in GitHub Desktop.
Save insideone/4dccc34941462895511948efb4071239 to your computer and use it in GitHub Desktop.
PHP date: вывод даты с русским названием месяца и возможностью склонения
<?php
function rdate($format, $timestamp = null, $case = 0)
{
if ($timestamp === null)
$timestamp = time();
static $loc =
'Январ,ь,я,е,ю,ём,е
Феврал,ь,я,е,ю,ём,е
Март, ,а,е,у,ом,е
Апрел,ь,я,е,ю,ем,е
Ма,й,я,е,ю,ем,е
Июн,ь,я,е,ю,ем,е
Июл,ь,я,е,ю,ем,е
Август, ,а,е,у,ом,е
Сентябр,ь,я,е,ю,ём,е
Октябр,ь,я,е,ю,ём,е
Ноябр,ь,я,е,ю,ём,е
Декабр,ь,я,е,ю,ём,е';
if (is_string($loc)) {
$months = array_map('trim', explode("\n", $loc));
$loc = array();
foreach ($months as $monthLocale) {
$cases = explode(',', $monthLocale);
$base = array_shift($cases);
$cases = array_map('trim', $cases);
$loc[] = array(
'base' => $base,
'cases' => $cases,
);
}
}
$m = (int)date('n', $timestamp) - 1;
$F = $loc[$m]['base'] . $loc[$m]['cases'][$case];
$format = strtr($format, array(
'F' => $F,
'M' => substr($F, 0, 3),
));
return date($format, $timestamp);
}
<?php
$arTest = array(
'11.01.2012',
'12.02.2012',
'13.03.2012',
'14.04.2012',
'15.05.2012',
'16.06.2012',
'17.07.2012',
'18.08.2012',
'19.09.2012',
'20.10.2012',
'21.11.2012',
'22.12.2012',
);
$arTest = array_map('strtotime', $arTest);
$f = 'd.m.Y - F - M';
foreach($arTest as $date)
{
for($case = 0; $case < 6; $case++)
echo rdate($f, $date, $case).'<br />';
echo '<br />';
}
/* Вывод:
11.01.2012 - Январь - Янв
11.01.2012 - Января - Янв
11.01.2012 - Январе - Янв
11.01.2012 - Январю - Янв
11.01.2012 - Январём - Янв
11.01.2012 - Январе - Янв
12.02.2012 - Февраль - Фев
12.02.2012 - Февраля - Фев
12.02.2012 - Феврале - Фев
12.02.2012 - Февралю - Фев
12.02.2012 - Февралём - Фев
12.02.2012 - Феврале - Фев
13.03.2012 - Март - Мар
13.03.2012 - Марта - Мар
13.03.2012 - Марте - Мар
13.03.2012 - Марту - Мар
13.03.2012 - Мартом - Мар
13.03.2012 - Марте - Мар
14.04.2012 - Апрель - Апр
14.04.2012 - Апреля - Апр
14.04.2012 - Апреле - Апр
14.04.2012 - Апрелю - Апр
14.04.2012 - Апрелем - Апр
14.04.2012 - Апреле - Апр
15.05.2012 - Май - Май
15.05.2012 - Мая - Мая
15.05.2012 - Мае - Мае
15.05.2012 - Маю - Маю
15.05.2012 - Маем - Мае
15.05.2012 - Мае - Мае
16.06.2012 - Июнь - Июн
16.06.2012 - Июня - Июн
16.06.2012 - Июне - Июн
16.06.2012 - Июню - Июн
16.06.2012 - Июнем - Июн
16.06.2012 - Июне - Июн
17.07.2012 - Июль - Июл
17.07.2012 - Июля - Июл
17.07.2012 - Июле - Июл
17.07.2012 - Июлю - Июл
17.07.2012 - Июлем - Июл
17.07.2012 - Июле - Июл
18.08.2012 - Август - Авг
18.08.2012 - Августа - Авг
18.08.2012 - Августе - Авг
18.08.2012 - Августу - Авг
18.08.2012 - Августом - Авг
18.08.2012 - Августе - Авг
19.09.2012 - Сентябрь - Сен
19.09.2012 - Сентября - Сен
19.09.2012 - Сентябре - Сен
19.09.2012 - Сентябрю - Сен
19.09.2012 - Сентябрём - Сен
19.09.2012 - Сентябре - Сен
20.10.2012 - Октябрь - Окт
20.10.2012 - Октября - Окт
20.10.2012 - Октябре - Окт
20.10.2012 - Октябрю - Окт
20.10.2012 - Октябрём - Окт
20.10.2012 - Октябре - Окт
21.11.2012 - Ноябрь - Ноя
21.11.2012 - Ноября - Ноя
21.11.2012 - Ноябре - Ноя
21.11.2012 - Ноябрю - Ноя
21.11.2012 - Ноябрём - Ноя
21.11.2012 - Ноябре - Ноя
22.12.2012 - Декабрь - Дек
22.12.2012 - Декабря - Дек
22.12.2012 - Декабре - Дек
22.12.2012 - Декабрю - Дек
22.12.2012 - Декабрём - Дек
22.12.2012 - Декабре - Дек
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment