setlocale не работает, и я попытался создать логику, чтобы делать то, что я хочу:
У меня есть эта строка string(19) "2017-08-29 11:27:24"
Я хочу получить месяц (в этом случае 08) из массива ниже в позиции 08 a.k.a «Август». И преобразовать его в дату снова.
$amonths=array('01'=>'Януари','02'=>'Февруари','03'=>'Март','04'=>'Април','05'=>'Май','06'=>'Юни','07'=>'Юли','08'=>'Август','09'=>'Септември','10'=>'Октомври','11'=>'Ноември','12'=>'Декември');
А потом использовать date('j F Y', some variable)
, Результат будет "29 Август 2017"
не "29 August 2017"
Вы можете с уверенностью заменить строки, если вы замените полное название месяца английским, а не цифрами. Примерно так будет работать:
Код: (демонстрация)
$lookup=['January'=>'Януари',
'February'=>'Февруари',
'March'=>'Март',
'April'=>'Април',
'May'=>'Май',
'June'=>'Юни',
'July'=>'Юли',
'August'=>'Август',
'September'=>'Септември',
'October'=>'Октомври',
'November'=>'Ноември',
'December'=>'Декември'];
$date=date('j F Y',strtotime("2017-08-29 11:27:24"));
echo str_replace(array_keys($lookup),$lookup,$date);
Выход:
29 Август 2017
Других решений пока нет …