Це залежить від формату, в який ви хочете відображати дату.
Статичний формат дати
Якщо ви бажаєте відобразити статичний формат, однаковий для всіх локалів (наприклад, ISO 8601 для каналу Atom), слід скористатися date
фільтром Twig :
{{ game.gameDate|date('Y-m-d\\TH:i:sP') }}
Який завжди буде повертати дату у такому форматі:
2014-05-02T08: 55: 41З
Рядки формату, прийняті date
фільтром, такі ж, як і для функції PHPdate()
. (Єдина відмінність полягає в тому, що, наскільки я знаю, ви не можете використовувати заздалегідь визначені константи, які можна використовувати у функції PHP date()
)
Місцеві дати (та часи)
Однак, оскільки ви хочете відобразити його у веб-переглядачі, ви, ймовірно, захочете показати його у читаному для людини форматі, локалізованому для мови та місцезнаходження користувача. Замість того, щоб робити локалізацію самостійно, ви можете використовувати для цього розширення Intl (яке використовує IntlDateFormatter PHP ). Він забезпечує фільтр, 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 року чи 15:30:32 в англійській мові)
'full'
для повністю заданого стилю (вівторок, 12 квітня 1952 р. н.е. або 15:30:42 вечора PST в англійській мові)
Приклад
Так, наприклад, якщо ви хочете відобразити дату у форматі, еквівалентному 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 можна знайти в цій окремій відповіді .
{{ game.gameDate|date('Y-m-d H:i:s') }}
для дати та часу. У мене були проблеми з пошуком характеру хвилин.