Локализация дат и времени

Задача
Необходимо отображать даты и значения времени в соответствии с настройками локали.

Решение
Это делается при помощи строки формата %c функции strftime():

print strftime('%c');

Можно также хранить строки формата функции strftime() как сообщения в каталоге сообщений:

$MC = new pc_MC_es_US;
print strftime($MC->msg('%Y-%m-%d'));

Обсуждение
Строка формата %c функции strftime() задает возвращаемое этой функцией представление даты и времени, предпочтительное для текущей локали. Ниже показан наиболее быстрый способ форматирования строки времени в соответствии с текущими настройками:

print strftime('%c');

Этот фрагмент кода генерирует множество результатов:

Tue Aug 13 18:37:11 2002 // для локали C по умолчанию
mar 13 ago 2002 18:37:11 EDT // для локали es_US
mar 13 aoы 2002 18:37:11 EDT // для локали fr_FR

Форматированная строка времени, полученная с помощью %c, хотя и соответствует локали, не очень гибкая. Например, если требуется только время, лучше передать другую строку формата функции strftime().

Хуже то, что и сами строки задания формата варьируются от локали к локали.


В некоторых локалях значения часов отображаются в диапазоне от 1 до 12 с уточнением A.M./P.M., а в других они должны изменяться от 0 до 23. Чтобы строки времени выводились корректно именно для данной локали, включите нужные элементы в массив $messages для каждого формата времени. Ключ определенного формата времени, например %H:%M, для всех локалей будет одинаков. А вот значение может изменяться, например %H:%M для 24-часовых локалей или %I:%M %P для 12-часовых локалей. Затем найдите соответствующую строку формата и передайте ее функции strftime():$MC = new pc_MC_es_US;
print strftime($MC->msg('%H:%M'));

Смена локали не изменяет часовой пояс, она меняет только форматирование показываемого результата.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Использование определенной локали
Локализация включаемых файлов
Локализация денежных значений
Локализация изображений
Локализация текстовых сообщений