Skip to content

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)