Um dos meus campos em uma das minhas entidades é uma variável "datetime".
Como posso converter esse campo em uma string para renderizar em um navegador?
Aqui está um trecho de código:
{% for game in games %}
...
<td> {{game.gameTeamIdOne.teamName}} </td>
<td> {{game.gameTeamIdTwo.teamName}} </td>
<td> {{game.gameDate}}</td>
</tr>
{% endfor %}
Aqui está a variável na minha classe de entidade:
/**
* @var date $gameDate
*
* @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
*/
private $gameDate;
E aqui está a mensagem de erro que estou recebendo:
Uma exceção foi lançada durante a renderização de um modelo ("Erro fatal capturável: o objeto da classe DateTime não pôde ser convertido em seqüência de caracteres em ... \ app \ cache \ dev \ twig \ 9b \ ad \ 58fd3bb1517632badf1fdc7fa4a8.php linha 33" ) em "BeerBundle: Games: gameTable.html.twig" na linha 10.
{{ game.gameDate|date('Y-m-d H:i:s') }}
para data e hora. Eu tive problemas para encontrar caráter por minutos.date
função Twig . Com base no seu exemplo, você precisará envolvê-lo em:{% if game.gameDate is not empty %} ... {%endif}
DateTime
classe! Em vez disso, basta usar olocalizeddate
filtro para Twig .{% if game.gameDate %} {{ game.gameDate|date('Y-m-d H:i:s') }} {% endif %}
seria sugeridoVocê pode usar o
date
filtro:fonte
__toString()
método precisaria saber para qual formato converter oDateTime
objeto e provavelmente existem centenas de formatos possíveis por aí. Obviamente, no PHP você pode usar oformat()
método em umDateTime
objeto, que recebe um argumento de formato, e odate
filtro é simplesmente o equivalente do Twig a esse método.Depende do formato em que você deseja que a data seja mostrada.
Formato de data estática
Se você deseja exibir um formato estático, o mesmo para todos os locais (por exemplo, ISO 8601 para um feed Atom), você deve usar o
date
filtro do Twig :O que sempre retornará uma data e hora no seguinte formato:
As strings de formato aceitas pelo
date
filtro são as mesmas que você usaria para adate()
função do PHP . (a única diferença é que, até onde eu sei, você não pode usar as constantes predefinidas que podem ser usadas nadate()
função PHP )Datas (e horários) localizados
No entanto, como você deseja renderizá-lo no navegador, provavelmente o mostrará em um formato legível por humanos, localizado para o idioma e o local do usuário. Em vez de fazer a localização, você pode usar a Extensão Intl para isso (que faz uso do IntlDateFormatter do PHP ). Ele fornece um filtro
localizeddate
que exibirá a data e a hora usando um formato localizado.Argumentos para
localizeddate
:date_format
: Uma das cadeias de formato (veja abaixo)time_format
: Uma das cadeias de formato (veja abaixo)locale
: (opcional) Use isso para substituir o código do idioma configurado. Deixe esse argumento de fora para usar o código do idioma padrão, que pode ser configurado na configuração do Symfony.(há mais, consulte os documentos para obter a lista completa de argumentos possíveis)
Para
date_format
etime_format
você pode usar uma das seguintes seqüências de caracteres:'none'
se você não quiser incluir esse elemento'short'
para o estilo mais abreviado (13/12/52 ou 15:30 em um código de idioma inglês)'medium'
para o estilo médio (12 de janeiro de 1952 em um código de idioma inglês)'long'
para o estilo longo (12 de janeiro de 1952 ou 15:30:32 em um código de idioma inglês)'full'
para o estilo completamente especificado (terça-feira, 12 de abril de 1952 dC ou 15:30:42 pm PST em um código de idioma inglês)Exemplo
Portanto, por exemplo, se você deseja exibir a data em um formato equivalente a
February 6, 2014 at 10:52 AM
, use a seguinte linha no seu modelo Twig:No entanto, se você usar um código de idioma diferente, o resultado será localizado para esse código de idioma:
6 februari 2014 10:52
para anl
localidade;6 février 2014 10:52
para afr
localidade;6. Februar 2014 10:52
para ade
localidade; etc.Como você pode ver,
localizeddate
não apenas traduz os nomes dos meses, mas também usa as notações locais. A notação em inglês coloca a data após o mês, onde as notações em holandês, francês e alemão a colocam antes do mês. Os nomes dos meses em inglês e alemão começam com uma letra maiúscula, enquanto os nomes dos meses em holandês e francês são minúsculos. E as datas alemãs têm um ponto acrescentado.Instalação / configuração do código do idioma
As instruções de instalação para a extensão Intl podem ser encontradas nesta resposta separada .
fonte
Não esqueça
Entidade:
Visão:
>> Saída 2013-09-18 16:14:20
fonte
Existe uma ferramenta symfony2 para exibir a data no local atual:
https://github.com/michelsalib/BCCExtraToolsBundle
fonte
Para a seqüência de tempo completo da data, incluindo o deslocamento do fuso horário.
fonte
você pode renderizar da seguinte maneira
{{post.published_at | date ("m / d / A")}}}
Para mais detalhes, visite http://twig.sensiolabs.org/doc/filters/date.html
fonte
Sei que essa é uma pergunta bastante antiga, mas a encontrei hoje, mas as respostas não eram o que eu precisava.
Então aqui está o que eu precisava.
Se você, como eu , procura exibir a data atual em galho, pode usar o seguinte:
{{ "now"|date("m/d/Y") }}
Consulte a documentação sobre isso:
data em galho
fonte
Para evitar erro no valor nulo, você pode usar este código:
fonte