Formatear fechas correctamente usando dayjs
- Las fechas que se usan en Mongo estan en UTC. Eso significa que si formateo, la fecha va a ser correcta si y solo si, la fecha no se genero entre las 12:00AM y las 5:00am porque seria un día antes.
- La hora de colombia son 5 horas menos a una fecha utc
- OJO si formateamos una fecha UTC a horas minutos y segundos no seria equivalente a la hora de colombia
js
// Opción A - funciona
import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";
import 'dayjs/locale/es';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.locale("es");
const fechaMostrar = dayjs(item.createdAt)
.tz('America/Bogota') // convierte la fecha a la zona horaria de Colombia
.format('MM/DD/YYYY');
console.log(fechaMostrar);
// Opción B - funciona : Código más limpio
/* TRABAJAR CON FECHAS */
const dayjs = require('dayjs');
// Es el plugin necesario para manejar fechas en formato UTC.
const utc = require('dayjs/plugin/utc');
// Registrar el plugin
// Habilita el uso de .utc().
dayjs.extend(utc);
//UTC: Tiempo Universal Coordinado
/* let fecha = '2025-07-17T00:00:00Z' */
let fecha = '2025-07-07T15:00:14.429Z'
/* let fechaFormateada = dayjs.utc(fecha).format('MM/DD/YYYY') */
let fechaFormateada = dayjs.utc(fecha).format('MM/DD/YYYY HH:mm:ss.SSS') //HORA EN UTC
let fechaFormateada2 = dayjs.utc(fecha).local().format('MM/DD/YYYY HH:mm:ss.SSS') //HORA EN LA ZONA LOCAL - COLOMBIA - .local()
console.log(fechaFormateada)
console.log('fechaFormateada2: ', fechaFormateada2)