Jednym z moich pól w jednym z moich podmiotów jest zmienna „datetime”.
Jak przekonwertować to pole na ciąg znaków w celu renderowania w przeglądarce?
Oto fragment kodu:
{% for game in games %}
...
<td> {{game.gameTeamIdOne.teamName}} </td>
<td> {{game.gameTeamIdTwo.teamName}} </td>
<td> {{game.gameDate}}</td>
</tr>
{% endfor %}
Oto zmienna w mojej klasie encji:
/**
* @var date $gameDate
*
* @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
*/
private $gameDate;
A oto komunikat o błędzie, który otrzymuję:
Zgłoszono wyjątek podczas renderowania szablonu („Catchable Fatal Error: Obiekt klasy DateTime nie mógł zostać przekonwertowany na ciąg znaków w ... \ app \ cache \ dev \ twig \ 9b \ ad \ 58fd3bb1517632badf1fdc7fa4a8.php wiersz 33” ) w „BeerBundle: Games: gameTable.html.twig” w linii 10.
{{ game.gameDate|date('Y-m-d H:i:s') }}
dla daty i godziny. Przez kilka minut miałem problemy ze znalezieniem postaci.date
funkcji Twiga . Na podstawie Twojego przykładu musisz go owinąć{% if game.gameDate is not empty %} ... {%endif}
DateTime
klasy! Zamiast tego po prostu użyjlocalizeddate
filtru dla Twig .{% if game.gameDate %} {{ game.gameDate|date('Y-m-d H:i:s') }} {% endif %}
byłoby sugerowaneMożesz użyć
date
filtru:źródło
__toString()
metoda musiałaby wiedzieć, na jaki format przekonwertowaćDateTime
obiekt, i prawdopodobnie istnieją setki możliwych formatów. Oczywiście w PHP można użyćformat()
metody naDateTime
obiekcie, który przyjmuje argument formatu, adate
filtr jest po prostu odpowiednikiem Twig tej metody.Zależy to od formatu, w jakim ma być wyświetlana data.
Statyczny format daty
Jeśli chcesz wyświetlić format statyczny, który jest taki sam dla wszystkich ustawień narodowych (na przykład ISO 8601 dla kanału Atom), powinieneś użyć
date
filtru Twiga :Co zawsze zwróci datę / godzinę w następującym formacie:
Ciągi formatów akceptowane przez
date
filtr są takie same, jak dla funkcji PHPdate()
. (jedyną różnicą jest to, że o ile mi wiadomo, nie można używać predefiniowanych stałych, które mogą być używane wdate()
funkcji PHP )Zlokalizowane daty (i godziny)
Ponieważ jednak chcesz wyrenderować go w przeglądarce, prawdopodobnie będziesz chciał pokazać go w formacie czytelnym dla człowieka, zlokalizowanym dla języka i lokalizacji użytkownika. Zamiast samodzielnej lokalizacji możesz użyć do tego rozszerzenia Intl (które korzysta z IntlDateFormatter PHP ). Zapewnia filtr,
localizeddate
który wyświetli datę i godzinę przy użyciu zlokalizowanego formatu.Argumenty za
localizeddate
:date_format
: Jeden z ciągów formatu (patrz poniżej)time_format
: Jeden z ciągów formatu (patrz poniżej)locale
: (opcjonalnie) Użyj tego, aby zastąpić skonfigurowane ustawienia narodowe. Pozostaw ten argument, aby użyć domyślnych ustawień regionalnych, które można skonfigurować w konfiguracji Symfony.(jest więcej, zobacz dokumentację, aby uzyskać pełną listę możliwych argumentów)
For
date_format
itime_format
możesz użyć jednego z następujących ciągów:'none'
jeśli nie chcesz dołączyć tego elementu'short'
dla najbardziej skróconego stylu (13.12.2016 lub 15:30 w języku angielskim)'medium'
dla średniego stylu (12 stycznia 1952 r. w języku angielskim)'long'
na długi styl (12 stycznia 1952 lub 15:30:32 w języku angielskim)'full'
dla całkowicie określonego stylu (wtorek, 12 kwietnia 1952 r. lub 15:30:42 PST w języku angielskim)Przykład
Na przykład, jeśli chcesz wyświetlić datę w formacie równoważnym do
February 6, 2014 at 10:52 AM
, użyj następującego wiersza w szablonie Twig:Jeśli jednak użyjesz innego ustawienia narodowego, wynik zostanie zlokalizowany dla tych ustawień regionalnych:
6 februari 2014 10:52
dlanl
lokalizacji;6 février 2014 10:52
dlafr
lokalizacji;6. Februar 2014 10:52
dlade
lokalizacji; itp.Jak widać,
localizeddate
nie tylko tłumaczy nazwy miesięcy, ale także korzysta z lokalnych notacji. Notacja angielska umieszcza datę po miesiącu, a notacja holenderska, francuska i niemiecka przed miesiącem. Nazwy miesięcy w języku angielskim i niemieckim zaczynają się od dużej litery, natomiast nazwy miesięcy w języku niderlandzkim i francuskim są małe. Do niemieckich dat dołączona jest kropka.Instalacja / ustawienie ustawień regionalnych
Instrukcje instalacji dla rozszerzenia Intl można znaleźć w tej osobnej odpowiedzi .
źródło
Nie zapomnij
Podmiot:
Widok:
>> Wyniki 2013-09-18 16:14:20
źródło
Istnieje narzędzie symfony2 do wyświetlania daty w bieżącym języku:
https://github.com/michelsalib/BCCExtraToolsBundle
źródło
Dla pełnego ciągu daty i godziny wraz z przesunięciem strefy czasowej.
źródło
możesz renderować w następujący sposób
{{post.published_at | date („m / d / Y”)}}
Więcej informacji można znaleźć na stronie http://twig.sensiolabs.org/doc/filters/date.html
źródło
Wiem, że to dość stare pytanie, ale znalazłem to pytanie dzisiaj, ale odpowiedzi nie były tym, czego potrzebowałem.
Oto, czego potrzebowałem.
Jeśli, podobnie jak ja , chcesz wyświetlić aktualną datę w gałązce, możesz użyć następujących opcji:
{{ "now"|date("m/d/Y") }}
Zobacz dokumentację na ten temat:
data na gałązce
źródło
Aby uniknąć błędu wartości zerowej, możesz użyć tego kodu:
źródło