PHP установил немецкую локализацию, не работающую в проекте

#php #localization #locale

#php #локализация

Вопрос:

      $time = new DateTime('today 4 PM');

     $now = new DateTime('now');

     // check if current time is past 4 PM
          if ($now > $time) {
          $time = new DateTime('tomorrow 4 PM');
          }

     $diff = $time->diff($now);
  

часть, которую мне не нужно объяснять

после этого я проверяю день с

      $dw = date( "w");
     if ($dw == 6 || $dw == 0) { 
  

и есть несколько операторов if и else, если его dw равно 6, тогда он должен увеличить день 2, поэтому, если это пятница, это воскресенье

и теперь я пытаюсь распечатать его с помощью echo

      echo "Date ".$datetime->format('<b>l, d F</b>') . ";
  

он печатает воскресенье, 15 июня, но я пытаюсь преобразовать его в немецкий. Это на самом деле не работает, поэтому он все равно распечатывает его на английском языке. Что я уже проверяю:
Я уже добавляю

 setlocale(LC_TIME, "de_DE");
  

и уже проверьте, установлен ли немецкий локальный, и да, это
так, и еще несколько… но ничего не работает…
и я подумал об удалении локалей, чтобы получить только немецкий, возможно, это могло бы сработать
, и я подумал об этом, я создал массив для определения дней с немецким именем, поэтому 0 = воскресенье, но тогда я должен все изменить

Комментарии:

1. 1 от меня, я бы всегда рекомендовал ppl использовать DateTime поверх любого другого режима / функции даты и времени, и я ожидаю, что он сможет использовать локали и без ::format() .

Ответ №1:

См. Примечание в руководстве по DateTime::format :

Этот метод не использует локали. Все выходные данные на английском языке.

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

Комментарии:

1. ах, хорошо, но как установить с помощью strftime () сегодня в 4 часа дня, как указано выше?

2. @ThePom См. Руководство, l, d F было бы что-то вроде %A, %d %B .

3. он по-прежнему выводит английскую версию, я также добавляю setlocale(LC_TIME, «de_DE»); снова

4. @ThePom Тогда языковой стандарт, вероятно, не установлен, я получаю это из командной строки: $ php -r 'setlocale(LC_TIME, "de_DE"); echo strftime("%A, %d %B");' Freitag, 13 Juni

5. хорошо, если я посмотрю на сервер с помощью putty, я получу Fr 13. 17 июня: 15:37 по восточному времени 2014 года, так что это время в Германии, но у Magento есть проблема со временем, я думаю