datetime symfony французский OVH

Я не понимаю, почему локаль, установленная в config.yml symfony, не применяется на моем сервере OVH.

Я попытался прямо конвертировать дату в php без рамки, и вот мои результаты:

setlocale (LC_TIME, 'fr_FR.utf8');

echo strftime ("% A% e% B% Y", mktime (0, 0, 0, 12, 22, 1978));

$today = new \datetime();
print_r ($today-> format ('l d F Y - H:i'));

возвращение: "22 декабря 1978 года" "вторник, 27 марта 2018 года - 18:49"

Хотелось бы только "22 декабря 1978 года"

Я не хочу использовать https://www.simonholywell.com/post/2015/07/international-php-dates-with-intl/ потому что я не хочу конвертировать даты каждый раз, когда мне нужно отобразить дату,

У меня нет этой проблемы на других хостерах. Только на веб-хостинге OVH.

Спасибо за помощь

1 ответ

В этой статье есть обходной путь из того же блога, состоящий в том, чтобы преобразовать объект даты в метку времени, а затем отформатировать его в соответствии с настройками локали с помощью strftime:

setlocale(LC_TIME, 'fr_FR')

echo strftime("%A %e %B %Y", (new \DateTime())->getTimestamp());

Carbon, библиотека, расширяющая DateTime, обрабатывает это в своем formatLocalized метод:

echo strftime("%A %e %B %Y", strtotime((new \DateTime())->format('Y-m-d H:i:s')));

Я не знаю о причине использования strtotime а также DateTime::format вместо просто DateTime::getTimestamp (оба ограничены датами после эпохи UNIX из-за strftime), но я думаю, вам придется конвертировать DateTime так или иначе.

Другие вопросы по тегам