<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 с помощью средства выбора даты и четко указывает на 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 ().
Досадно, date
не осведомлен о локали. Из руководства:
Чтобы форматировать даты на других языках, вы должны использовать setlocale () и
Функция strftime () вместо даты.
Вы, вероятно, хотите:
setlocale(LC_TIME, 'de_DE');
echo strftime('%B');
Кроме того, оформить заказ углерод. У него есть непротиворечивый API, который включает в себя понимание языка. В качестве примера:
setlocale(LC_TIME, 'German');
echo Carbon::now()->formatLocalized('%B'); // Sonntag