¿Qué es date-fns?

date-fns es una biblioteca moderna de utilidades de fechas para JavaScript que ofrece herramientas completas, consistentes y fiables para trabajar con fechas en JavaScript. A diferencia del objeto nativo Date de JavaScript, que tiene muchas peculiaridades e inconsistencias, date-fns ofrece un enfoque modular y funcional para la manipulación de fechas. Es tree‑shakeable, lo que significa que solo incluyes las funciones que realmente utilizas, manteniendo el tamaño de tu bundle al mínimo. La biblioteca soporta más de 200 funciones que cubren todo, desde formateo y análisis hasta comparación, manipulación y localización de fechas.

¿Por qué usar un playground de date-fns?

Trabajar con fechas en JavaScript puede ser complicado: zonas horarias, patrones de formateo y aritmética de fechas a menudo generan resultados inesperados. Un entorno de playground te permite experimentar con las funciones de date-fns en tiempo real, ver la salida inmediata y aprender la API sin configurar un proyecto completo. Es perfecto para probar cadenas de formato, depurar cálculos de fechas o crear rápidamente prototipos de lógica de fechas antes de integrarlos en tu aplicación.

Descripción de la herramienta

El date-fns Playground es un entorno de codificación interactivo que te permite escribir y ejecutar código JavaScript con la biblioteca completa de date-fns precargada. Toda la biblioteca date-fns está disponible a través del objeto dateFns, dándote acceso a todas las más de 200 funciones. El código se ejecuta automáticamente mientras escribes (con debouncing), y todas las salidas de console.log, console.warn y console.error aparecen en el terminal integrado bajo el editor. Esto lo hace ideal para aprender date-fns, probar operaciones de fechas y experimentar con diferentes opciones de formateo.

Ejemplos

Formatea la fecha actual:

const now = new Date();
console.log(dateFns.format(now, "MMMM do, yyyy"));
// Salida: December 30th, 2025

Calcula los días entre dos fechas:

const start = new Date(2025, 0, 1);
const end = new Date(2025, 11, 31);
console.log(dateFns.differenceInDays(end, start) + " days");
// Salida: 364 days

Añade tiempo a una fecha:

const today = new Date();
const nextWeek = dateFns.addWeeks(today, 1);
const nextMonth = dateFns.addMonths(today, 1);
console.log("Próxima semana:", dateFns.format(nextWeek, "yyyy-MM-dd"));
console.log("Próximo mes:", dateFns.format(nextMonth, "yyyy-MM-dd"));

Verifica si una fecha está en el pasado o futuro:

const date = new Date(2024, 5, 15);
console.log("¿Es pasado?", dateFns.isPast(date));
console.log("¿Es futuro?", dateFns.isFuture(date));

Analiza una cadena de fecha:

const parsed = dateFns.parse("25/12/2025", "dd/MM/yyyy", new Date());
console.log(dateFns.format(parsed, "EEEE, MMMM do, yyyy"));
// Salida: Thursday, December 25th, 2025

Características

  • Biblioteca completa de date-fns: Accede a todas las funciones 200+ de date-fns a través del objeto dateFns
  • Ejecución de código en vivo: El código se ejecuta automáticamente mientras escribes con debounce inteligente
  • Terminal integrado: Visualiza la salida de la consola al instante sin herramientas de desarrollo del navegador
  • Resaltado de sintaxis: Resaltado de sintaxis JavaScript para mejor legibilidad del código
  • Manejo de errores: Los errores en tiempo de ejecución se muestran claramente en la salida del terminal

Casos de uso

  • Aprender date-fns: Experimenta con diferentes funciones y ve los resultados inmediatamente sin configurar un proyecto
  • Pruebas de formato de fecha: Prueba diferentes cadenas de formato para encontrar el patrón exacto que necesitas
  • Prototipado de cálculos de fecha: Prueba aritmética de fechas compleja como añadir días laborables, encontrar intervalos o comparar fechas
  • Depuración de lógica de fechas: Aísla y prueba fragmentos de código relacionados con fechas de tus proyectos
  • Conversiones rápidas de fechas: Convierte entre formatos de fecha o calcula diferencias de tiempo al instante

Funciones comunes de date-fns

Función Descripción Ejemplo
format Formatea una fecha a una cadena dateFns.format(date, "yyyy-MM-dd")
parse Analiza una cadena a una fecha dateFns.parse("2025-01-01", "yyyy-MM-dd", new Date())
addDays Añade días a una fecha dateFns.addDays(date, 7)
subMonths Resta meses a una fecha dateFns.subMonths(date, 3)
differenceInDays Obtiene los días entre fechas dateFns.differenceInDays(dateA, dateB)
isAfter Verifica si una fecha es posterior a otra dateFns.isAfter(dateA, dateB)
isBefore Verifica si una fecha es anterior a otra dateFns.isBefore(dateA, dateB)
startOfMonth Obtiene el primer día del mes dateFns.startOfMonth(date)
endOfYear Obtiene el último momento del año dateFns.endOfYear(date)
formatDistance Diferencia de tiempo legible por humanos dateFns.formatDistance(dateA, dateB)

Referencia de tokens de formato

Token Descripción Ejemplo
yyyy año de 4 dígitos 2025
MM mes de 2 dígitos 01‑12
MMMM nombre completo del mes January
dd día de 2 dígitos 01‑31
do día con ordinal 1st, 2nd, 3rd
EEEE nombre completo del día de la semana Monday
EEE día de la semana abreviado Mon
HH hora en formato 24h 00‑23
hh hora en formato 12h 01‑12
mm minutos 00‑59
ss segundos 00‑59
a AM/PM AM, PM