<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