-
-
Save pavarov/052c4ca2bbf65e365e1713d6d6283306 to your computer and use it in GitHub Desktop.
PHP date: вывод даты с русским названием месяца и возможностью склонения
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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