PHP: дата "F" с setlocale не работает

<ul> <?php $event_date = get_sub_field('event_date'); // 20150203 $event_date_format = DateTime::createFromFormat('Ymd', $event_date); setlocale(LC_ALL, 'de_DE'); ?> <li> <h6><?php echo $event_date_format->format('d');?>. <?php echo $event_date_format->format('F');?></h6> <p><?php echo $event_date_format->format('H');?>:<?php echo $event_date_format->format('i');?></p> </li> </ul> 

Результатом этого является

 03. February 19:25 

Почему setlocale не влияет на это. Я хочу, чтобы мой месяц «F» был на немецком, например 3. Feber 19:25

Любая идея, что я делаю неправильно здесь?


ОБНОВЛЕНИЕ 1:

Если я попытаюсь использовать strftime() я вдруг получаю другой вывод даты. это на немецком, но неправильном?

 <ul> <?php $event_date = get_sub_field('event_date'); $event_date_format = DateTime::createFromFormat('Ymd', $event_date); setlocale(LC_ALL, 'de_DE'); ?> <li> <h6><?php echo $event_date_format->format('d');?>. <?php echo strftime('%B', $event_date);?></h6> <p><?php echo $event_date_format->format('H');?>:<?php echo $event_date_format->format('i');?></p> </li> </ul> 

Внезапно дата выхода не 03. February а 03. August , хотя дата должна быть в феврале.

Есть идеи?


ОБНОВЛЕНИЕ 2:

Это довольно странно. Я просто проверил переменную $event_date онлайн в инструменте конверсии unix, и я получаю это …

$ event_date: 20150203

Sat, 22 Aug 1970 05:16:43 GMT

Значение устанавливается внутри брандмауэра wordpress с помощью datepicker и четко говорит 03/02/2015

введите описание изображения здесь

date() и DateTime не уважают языковой стандарт

использовать strftime()

http://php.net/manual/en/function.strftime.php

http://php.net/manual/en/function.date.php

Чтобы форматировать даты на других языках, вы должны использовать функции setlocale () и strftime () вместо даты ().

Раздражающе, date не знакома с локальностью. Из руководства:

Чтобы форматировать даты на других языках, вы должны использовать функции setlocale () и strftime () вместо даты.

Вы, вероятно, хотите:

 setlocale(LC_TIME, 'de_DE'); echo strftime('%B'); 

В качестве альтернативы, заказывайте Carbon . У этого есть последовательный API, который включает знание языка. В качестве примера:

 setlocale(LC_TIME, 'German'); echo Carbon::now()->formatLocalized('%B'); // Sonntag