dateImplictTz
Paquete: @tiendana/ngx-core/pipes
Formatea fechas asegurando que se interpreten en UTC cuando no tienen zona horaria explícita.
Características
✅ Agrega automáticamente 'Z' a fechas string sin timezone
✅ Convierte timestamps Unix (segundos) a milisegundos
✅ Usa locale español de Colombia (es-CO)
✅ Formatea en UTC para consistencia
✅ Manejo seguro de valores null, undefined y cadena vacía
✅ No agrega Z si la fecha ya trae zona (Z, +05:00, -0500); la salida se formatea siempre en UTC
API
Sintaxis
{{ date | dateImplictTz:format }}
Parámetros
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
value | Date | string | number | null | undefined | Fecha a formatear | ✅ |
format | string | Formato de salida (igual que Angular DatePipe) | ✅ |
Retorno
String con la fecha formateada. Retorna string vacío si el valor es null, undefined o ''.
Uso
Con String sin Timezone
// Componente
dateString = '2024-03-15T10:30:00'; // Sin 'Z' al final
// Template
{{ dateString | dateImplictTz:'dd/MM/yyyy HH:mm' }}
// Output: "15/03/2024 10:30"
El pipe detecta que no tiene timezone y agrega 'Z' automáticamente para interpretarlo como UTC.
Con Timestamp Unix
// Componente
timestamp = 1710499800; // Segundos desde epoch
// Template
{{ timestamp | dateImplictTz:'medium' }}
// Output: "15 mar 2024, 10:30:00"
El pipe multiplica por 1000 automáticamente para convertir segundos a milisegundos.
Con Objeto Date
// Componente
today = new Date();
// Template
{{ today | dateImplictTz:'EEEE, d MMMM y' }}
// Output: "viernes, 15 marzo 2024"
Formatos Comunes
| Formato | Ejemplo | Descripción |
|---|---|---|
'dd/MM/yyyy' | 15/03/2024 | Fecha corta |
'dd/MM/yyyy HH:mm' | 15/03/2024 10:30 | Fecha y hora |
'yyyy-MM-dd' | 2024-03-15 | ISO format |
'short' | 15/3/24, 10:30 | Predefinido corto |
'medium' | 15 mar 2024, 10:30:00 | Predefinido medio |
'long' | 15 de marzo de 2024, 10:30:00 UTC | Predefinido largo |
'EEEE, d MMMM y' | viernes, 15 marzo 2024 | Fecha completa |
'HH:mm:ss' | 10:30:00 | Solo hora |
Ver Angular DatePipe para más formatos.
Casos de Uso
- Fechas del backend sin timezone
- Timestamps de APIs Unix
- Formato consistente en toda la aplicación
- Listas de eventos
- Historial de transacciones
Comparación con DatePipe
// DatePipe nativo (puede variar según timezone del navegador)
{{ date | date:'dd/MM/yyyy' }}
// dateImplictTz (siempre UTC, consistente)
{{ date | dateImplictTz:'dd/MM/yyyy' }}
Notas
El pipe siempre formatea en UTC para garantizar consistencia entre diferentes zonas horarias y navegadores.
El pipe multiplica por 1000 todo valor numérico: espera segundos. Si tu API devuelve milisegundos, usa DatePipe nativo.
El pipe formatea con el locale es-CO, que debe estar registrado antes de usarlo; si no, Angular lanza NG0701.
import { registerLocaleData } from '@angular/common';
import localeEsCo from '@angular/common/locales/es-CO';
registerLocaleData(localeEsCo, 'es-CO');