Quiero mostrar la fecha con el formato europeo, dd/MM/yyyy
pero con el formato DatePipe shortDate solo se muestra con el estilo de fecha de EE MM/dd/yyyy
. UU .
Supongo que esa configuración regional predeterminada es en_US. Tal vez me faltan los documentos, pero ¿cómo puedo cambiar la configuración regional predeterminada en una aplicación Angular2? ¿O tal vez hay alguna forma de pasar un formato personalizado a DatePipe?
javascript
angular
date-pipe
nsbm
fuente
fuente
Respuestas:
A partir de Angular2 RC6, puede establecer la configuración regional predeterminada en el módulo de su aplicación, agregando un proveedor:
Las tuberías Moneda / Fecha / Número deben recoger la configuración regional. LOCALE_ID es un OpaqueToken , que se importará desde angular / core.
Para un caso de uso más avanzado, es posible que desee elegir la configuración regional de un servicio. La configuración regional se resolverá (una vez) cuando se cree el componente que usa la tubería de fecha:
Espero que funcione para ti.
fuente
new CurrencyPipe('en-US');
. Espero que esto sea útil para algo, ya que apareció como el primer resultado al buscar en Google mi problema.La solución con LOCALE_ID es excelente si desea configurar el idioma de su aplicación una vez. Pero no funciona, si desea cambiar el idioma durante el tiempo de ejecución. Para este caso, puede implementar una tubería de fecha personalizada.
Ahora, si cambia el idioma de visualización de la aplicación utilizando TranslateService (consulte ngx-translate )
los formatos dentro de su aplicación deberían actualizarse automáticamente.
Ejemplo de uso:
o mira mi simple proyecto "Notas" aquí .
fuente
Con
angular5
la respuesta anterior ya no funciona!El siguiente código:
app.module.ts
Conduce al siguiente error:
Con
angular5
usted debe cargar y registrar el archivo de configuración regional utilizado por su cuenta.app.module.ts
Documentación
fuente
registerLocaleData
era suficiente, bueno, no lo es.Si usa
TranslateService
desde@ngx-translate/core
, a continuación se muestra una versión sin crear una nueva tubería que funcione con el cambio dinámico en tiempo de ejecución (probado en Angular 7). Usando ellocale
parámetro de DatePipe ( docs ):Primero, declare las configuraciones regionales que usa en su aplicación, por ejemplo, en
app.component.ts
:Luego, use su tubería dinámicamente:
myComponent.component.html
myComponent.component.ts
fuente
He echado un vistazo en date_pipe.ts y tiene dos bits de información que son de interés. cerca de la parte superior están las siguientes dos líneas:
Cerca del fondo está esta línea:
Esto me sugiere que la fecha está actualmente codificada para ser 'en-US'.
Por favor, ilumíneme si estoy equivocado.
fuente
En app.module.ts agregue las siguientes importaciones. Hay una lista de opciones LOCALE aquí .
Luego agregue el proveedor
Use tuberías en html. Aquí está la documentación angular para esto.
fuente
Haces algo como esto:
{{ dateObj | date:'shortDate' }}
o
{{ dateObj | date:'ddmmy' }}
Ver: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
fuente
Estaba luchando con el mismo problema y no funcionó para mí usando esto
Entonces, probé una solución alternativa, no la mejor solución, pero funcionó:
Siempre puedo crear una tubería personalizada.
fuente
Para aquellos que tienen problemas con AOT, debe hacerlo de manera un poco diferente con useFactory:
fuente
{ provide: LOCALE_ID, useFactory: () => 'fr-CA'}
hizo el truco para mí;)Copié el google pipe, cambié la configuración regional y funciona para mi país, es posible que no lo terminen para todas las configuraciones regionales. Debajo está el código.
fuente
Ok, propongo esta solución, muy simple, usando
ngx-translate
fuente
Esto podría ser un poco tarde, pero en mi caso (angular 6), creé una tubería simple encima de DatePipe, algo así:
Puede que no sea la mejor solución, pero simple y funciona.
fuente