php - formato - twig date español
Cómo representar un objeto DateTime en una plantilla de Twig (8)
Aunque puedes usar el
{{ game.gameDate|date(''Y-m-d'') }}
Enfoque, tenga en cuenta que esta versión no respeta la configuración regional del usuario, que no debería ser un problema con un sitio utilizado por usuarios de una sola nacionalidad. Los usuarios internacionales deben mostrar la fecha del juego totalmente diferente, como extender la clase /DateTime
y agregarle un método __toString()
que verifique la ubicación y actúe en consecuencia.
Editar :
Como lo señaló @Nic en un comentario, si usa la extensión Intl de Twig , tendrá un filtro de fecha localizeddate
disponible, que muestra la fecha en la configuración regional del usuario. De esta manera puedes abandonar mi idea anterior de extender /DateTime
.
Uno de mis campos en una de mis entidades es una variable de "fecha y hora".
¿Cómo puedo convertir este campo en una cadena para renderizar en un navegador?
Aquí hay un fragmento de código:
{% for game in games %}
...
<td> {{game.gameTeamIdOne.teamName}} </td>
<td> {{game.gameTeamIdTwo.teamName}} </td>
<td> {{game.gameDate}}</td>
</tr>
{% endfor %}
Aquí está la variable en mi clase de entidad:
/**
* @var date $gameDate
*
* @ORM/Column(name="GAME_DATE", type="datetime", nullable=true)
*/
private $gameDate;
Y aquí está el mensaje de error que estoy recibiendo:
Se ha generado una excepción durante la representación de una plantilla ("Error coleccionable de Fatal: El objeto de la clase DateTime no se pudo convertir en cadena en ... / app / cache / dev / twig / 9b / ad / 58fd3bb1517632badf1fdc7fa4a8.php line 33" ) en "BeerBundle: Games: gameTable.html.twig" en la línea 10.
Depende del formato en el que desea que se muestre la fecha.
Formato de fecha estática
Si desea mostrar un formato estático, que es el mismo para todas las configuraciones regionales (por ejemplo, ISO 8601 para una fuente Atom), debe usar el date de Twig:
{{ game.gameDate|date(''Y-m-d//TH:i:sP'') }}
Que siempre devolverá una fecha y hora en el siguiente formato:
2014-05-02T08: 55: 41Z
Las cadenas de formato aceptadas por el filtro de date
son las mismas que usaría para la función date()
PHP . (La única diferencia es que, por lo que sé, no puede usar las constantes predefinidas que se pueden usar en la función de date()
PHP)
Fechas localizadas (y horarios)
Sin embargo, dado que desea representarlo en el navegador, es probable que desee mostrarlo en un formato legible para las personas, localizado para el idioma y la ubicación del usuario. En lugar de hacer la localización usted mismo, puede usar la extensión Intl para esto (que utiliza el IntlDateFormatter de PHP). Proporciona un filtro de fecha localizeddate
que generará la fecha y la hora utilizando un formato localizado.
localizeddate( date_format, time_format [, locale ] )
Argumentos para la fecha localizeddate
:
-
date_format
: una de las cadenas de formato (ver más abajo) -
time_format
: una de las cadenas de formato (ver más abajo) -
locale
: (opcional) Use esto para anular la configuración regional configurada. Deje este argumento para usar la configuración regional predeterminada, que se puede configurar en la configuración de Symfony.
(hay más, consulte la documentación para obtener una lista completa de posibles argumentos)
Para date_format
y time_format
puede usar una de las siguientes cadenas:
-
''none''
si no quieres incluir este elemento -
''short''
para el estilo más abreviado (12/13/52 o 3:30 pm en un local inglés) -
''medium''
para el estilo medio (12 de enero de 1952 en un local inglés) -
''long''
para el estilo largo (12 de enero de 1952 o 3:30:32 pm en un local inglés) -
''full''
para el estilo completamente especificado (martes, 12 de abril de 1952 dC o 3:30:42 pm PST en un local inglés)
Ejemplo
Entonces, por ejemplo, si desea mostrar la fecha en un formato equivalente al February 6, 2014 at 10:52 AM
, use la siguiente línea en su plantilla de Twig:
{{ game.gameDate|localizeddate(''long'', ''short'') }}
Sin embargo, si utiliza una configuración regional diferente, el resultado se localizará para esa configuración regional:
-
6 februari 2014 10:52
para la localidadnl
; -
6 février 2014 10:52
para el local defr
; -
6. Februar 2014 10:52
para elde
locale; etc.
Como puede ver, localizeddate
no solo traduce los nombres de los meses, sino que también usa las notaciones locales. La notación en inglés coloca la fecha posterior al mes, donde las notaciones en holandés, francés y alemán la colocan antes del mes. Los nombres de los meses en inglés y alemán comienzan con una letra mayúscula, mientras que los nombres de los meses en holandés y francés están en minúsculas. Y las fechas alemanas tienen un punto añadido.
Instalación / configuración del local
Las instrucciones de instalación para la extensión Intl se pueden encontrar en esta respuesta por separado .
Hay una herramienta symfony2 para mostrar la fecha en la configuración regional actual:
{{ user.createdAt|localeDate }} to have a medium date and no time, in the current locale
{{ user.createdAt|localeDate(''long'',''medium'') }} to have a long date and medium time, in the current locale
Puedes usar el filtro de date
:
{{ game.gameDate|date("m/d/Y") }}
Sé que esta es una pregunta bastante antigua, pero encontré esta pregunta hoy, pero las respuestas no eran las que necesitaba.
Así que aquí está lo que necesitaba.
Si, como yo , está buscando mostrar la fecha actual en ramita, puede usar lo siguiente:
{{ "now"|date("m/d/Y") }}
Ver documentación sobre esto:
puedes renderizar de la siguiente manera
{{post.published_at | date ("m / d / Y")}}
Para más detalles puede visitar date
No te olvides
@ORM / HasLifecycleCallbacks ()
Entidad:
/**
* Set gameDate
*
* @ORM/PrePersist
*/
public function setGameDate()
{
$this->dateCreated = new /DateTime();
return $this;
}
Ver:
{{ item.gameDate|date(''Y-m-d H:i:s'') }}
>> Salida 2013-09-18 16:14:20
{{game.gameDate | date(''c'')}} // 2014-02-05T16:45:22+00:00
Para la cadena de tiempo de fecha completa, incluido el desplazamiento de zona horaria.