Как мне узнать день и месяц? - PullRequest
       73

Как мне узнать день и месяц?

4 голосов
/ 16 сентября 2010

Я использую следующую функцию для получения даты и времени:

  function formatEventTime($time, $type, $locale = 'nb_NO') {
    setlocale(LC_TIME, $locale);

    switch($type) {
      case 'date' :             $format = '%d.%m'; break;
      case 'dm'   :             $format = '%d. %B'; break;
      case 'time' :             $format = '%H:%M'; break;
      case 'dmy'  :         $format = '%d.%m.%Y'; break;
    }
    return strftime($format, strtotime($time));
  }

где $time = 2010-12-03 10:00:00. Проблема в том, что мои дни и месяцы все еще на английском. Как я могу изменить это, например, Норвежский

Обновление
Это работает на моем сервере, но не на моей локальной машине.

Ответы [ 3 ]

7 голосов
/ 16 сентября 2010

Использование IntlDateFormatter::format.

Пример:

<?php
$df = new IntlDateFormatter('nb_NO',
    IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'Europe/Oslo');
echo $df->format(time());

дает:

torsdag 16. september 2010 kl. 21.23.03 Norge
6 голосов
/ 16 сентября 2010

Вы должны использовать strftime() вместо даты ().

Возвращает строку, отформатированную в соответствии с форматом, используя данную временную метку или текущее местное время, если временная метка не указана. Имена месяцев и дней недели, а также другие зависящие от языка строки соответствуют текущей локали, установленной с помощью setlocale ().

5 голосов
/ 05 августа 2012

Я знаю, что эта тема старая, но у меня была такая же проблема сегодня.Даты отображаются правильно на моем компьютере с Linux, но на моем компьютере с Windows они все еще на английском языке.

Если вы хотите, чтобы это работало на компьютерах с Linux и Windows, вы должны быть осторожны с функцией setlocale ().В Linux вы должны использовать 'nb_NO' (например) для норвежских форматов, а в Windows вы должны использовать 'norwegian':

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    setlocale(LC_ALL, 'norwegian');
} else {
    setlocale(LC_ALL, 'nb_NO');
}

Вы можете найти список кодов языков для Windows в MSDN .

...