Это зависит от формата, в котором вы хотите, чтобы дата отображалась как.
Статический формат даты
Если вы хотите отобразить статический формат, который одинаков для всех локалей (например, ISO 8601 для канала Atom), вы должны использовать Twig's date
filter :
{{ game.gameDate|date('Y-m-d\\TH:i:sP') }}
Который всегда будет возвращать дату и время в следующем формате:
2014-05-02T08: 55: 41Z
Строки формата, принятые фильтром date
, такие же, как вы использовали бы для PHP * date()
function . (единственное отличие состоит в том, что, насколько мне известно, вы не можете использовать предопределенные константы, которые можно использовать в функции PHP date()
)
Локализованные даты (и время)
Однако, поскольку вы хотите отобразить его в браузере, вам, скорее всего, потребуется показать его в удобочитаемом формате, локализованном для языка и местоположения пользователя. Вместо того, чтобы выполнять локализацию самостоятельно, вы можете использовать для этого расширение Intl (которое использует PHP IntlDateFormatter ). Он предоставляет фильтр localizeddate
, который выводит дату и время в локализованном формате.
localizeddate( date_format, time_format [, locale ] )
Аргументы для localizeddate
:
date_format
: одна из строк формата (см. Ниже)
time_format
: одна из строк формата (см. Ниже)
locale
: (необязательно) Используйте это, чтобы переопределить настроенный языковой стандарт. Не используйте этот аргумент для использования локали по умолчанию, которую можно настроить в конфигурации Symfony.
(больше, см. документы для полного списка возможных аргументов)
Для date_format
и time_format
вы можете использовать одну из следующих строк:
'none'
, если вы не хотите включать этот элемент
'short'
для наиболее сокращенного стиля (12/13/52 или 15:30 в английском языке)
'medium'
для среднего стиля (12 января 1952 года в английском языке)
'long'
для длинного стиля (12 января 1952 или 3:30:32 вечера в английском языке)
'full'
для полностью определенного стиля (вторник, 12 апреля 1952 года нашей эры или 15:30:42 PST в английском языке)
* +1078 * Пример
Так, например, если вы хотите отобразить дату в формате, эквивалентном February 6, 2014 at 10:52 AM
, используйте следующую строку в шаблоне Twig:
{{ game.gameDate|localizeddate('long', 'short') }}
Однако, если вы используете другую локаль, результат будет локализован для этой локали:
6 februari 2014 10:52
для nl
локали;
6 février 2014 10:52
для fr
локали;
6. Februar 2014 10:52
для de
локали;
и т.д.
Как видите, localizeddate
не только переводит названия месяцев, но и использует локальные обозначения. Английская нотация ставит дату после месяца, где нотации Голландии, Франции и Германии ставят ее до месяца. Английские и немецкие названия месяцев начинаются с заглавной буквы, тогда как голландские и французские названия месяцев строчные. А на немецких датах стоит точка.
Установка / настройка языка
Инструкции по установке для расширения Intl можно найти в этот отдельный ответ .