Calculadora de Diferencia de Fechas
Calcula días, semanas, meses, años entre dos fechas
Calcula el intervalo entre dos fechas
¿Qué es una Calculadora de Diferencia de Fechas?
Una calculadora de diferencia de fechas mide la distancia entre dos fechas del calendario y la expresa en días, semanas, meses aproximados, años aproximados y unidades como horas o minutos. Sirve para revisar duración de proyectos, rangos de vacaciones, periodos de facturación, aniversarios, ventanas de conservación de datos e intervalos históricos simples. El resultado es una diferencia entre fechas, no necesariamente un conteo inclusivo de ambos extremos: del 1 de enero al 3 de enero hay normalmente dos días de diferencia, salvo que la regla del caso indique contar ambos días. Los meses y años son aproximados porque los meses no tienen la misma duración. Para días laborables, festivos, zonas horarias o plazos legales, se necesitan reglas específicas.
Cómo usar
Cómo usar
- Introduce la fecha de inicio
- Introduce la fecha de fin
- Haz clic en 'Calcular intervalo' para comparar ambas fechas
- Visualiza los resultados: días, semanas, meses, años, horas, minutos, segundos
Reglas de conteo
- Verifica si tu tarea necesita un intervalo exclusivo o un conteo inclusivo; muchas reglas de negocio cuentan tanto la fecha de inicio como la de fin.
- Para trabajos con distintas zonas horarias, convierte primero las fechas a la misma zona horaria, especialmente cuando importan las horas o los minutos.
Casos de uso
Principio técnico
La diferencia exacta en días se calcula como Math.floor((end.getTime() - start.getTime()) / 86_400_000), donde 86.400.000 es el número de milisegundos en un día de 24 horas sin cambio de horario. Esto da un intervalo exclusivo: del 1 de enero al 3 de enero hay 2 días, no 3, porque la resta mide el lapso entre dos instantes en lugar de contar casillas de calendario. Para un conteo inclusivo (contar ambos extremos), se suma 1 al resultado; muchas normas legales, de permisos y de facturación requieren esto, y el desfase de un día es la causa más habitual de discrepancias entre los informes de RR. HH. y finanzas. Las semanas son simplemente días / 7; la página también muestra horas = días * 24, minutos = días * 1.440 y segundos = días * 86.400 como totales derivados. Las diferencias en meses y años se etiquetan deliberadamente como "aproximadas" porque los meses y años calendario varían en duración. El enfoque simple es días / 30,436875 (promedio de mes gregoriano) y días / 365,2425 (promedio de año gregoriano en un ciclo de 400 años), lo cual es adecuado para informes de estado y paneles de control pero impreciso para contratos. Para un "X meses completos entre" preciso según el calendario, el algoritmo resta los componentes de año x 12 + mes y luego decrementa en 1 si el día del mes final es anterior al día del mes inicial; así es como la mayoría de las bibliotecas de fechas (date-fns differenceInMonths, dayjs $.diff('month'), Temporal Duration.from) lo calculan. El cálculo de años tiene la misma particularidad: del 2024-02-29 al 2025-02-28 a veces se cuenta como 1 año (ajustando al final del mes) y a veces como 0 años, 11 meses y 30 días, según la convención. Los años bisiestos siguen la regla gregoriana (divisible por 4, excepto los años de siglo no divisibles por 400, así 1900 = común, 2000 = bisiesto, 2024 = bisiesto). Un intervalo que incluye el 29 de febrero recoge un día extra automáticamente porque el conteo de días está anclado en milisegundos desde la época, no en campos de calendario. El manejo de zonas horarias es crítico cuando los dos extremos tienen resolución inferior al día: restar dos valores Date construidos a partir de cadenas de hora local puede desviarse por el desfase UTC local, y un intervalo que cruza una transición de horario de verano puede ser de 23 o 25 horas en lugar de las 24 nominales. El problema Y2038 (desbordamiento del time_t firmado de 32 bits de Unix el 2038-01-19T03:14:07Z) no afecta a esta página porque JavaScript Date usa un flotante de 64 bits capaz de representar fechas hasta aproximadamente 100 millones de días a cada lado de la época, pero los sistemas posteriores escritos en C de 32 bits aún requieren atención.
- Días exactos = Math.floor((end - start) / 86_400_000); 86,4 millones de ms por día sin cambio de horario.
- El resultado es exclusivo por defecto: 1 de enero al 3 de enero = 2 días; sumar 1 para conteo inclusivo (ambos extremos).
- El mes aproximado usa un promedio de 30,436875 días; el año usa 365,2425 días en el ciclo gregoriano de 400 años.
- Diferencia de meses precisa según calendario: (a2-a1)*12 + (m2-m1) y luego -1 si el día final < día inicial, igual que date-fns differenceInMonths.
- Años bisiestos: divisible por 4, excepto los años de siglo deben ser divisibles por 400 (1900 no, 2000 sí, 2024 sí).
- Las transiciones de horario de verano crean días calendario de 23h y 25h; una resta de 24h puede no equivaler a un día calendario.
- JavaScript Date es un flotante de 64 bits, inmune al Y2038 de Unix (desbordamiento de time_t de 32 bits el 2038-01-19 03:14:07 UTC).
Ejemplos
Dos años calendario completos (2025-01-01 a 2026-12-31)
Inicio : 2025-01-01
Fin : 2026-12-31
Días : 730
Semanas : 104.29
Meses : ~24.00 (aprox)
Años : ~2.00 (aprox)
Nota : 2028 es el siguiente año bisiesto en el rango, por lo que el intervalo incluye el 29 feb 2028 al extenderse.Intervalo corto (3 días)
Inicio : 2026-06-11
Fin : 2026-06-14
Días : 3
Horas : 72
Minutos : 4320
Segundos : 259200
Conteo inclusivo (contar ambos extremos): 4 díasDuración de proyecto cruzando un cambio de año
Inicio : 2026-01-15 (kickoff)
Fin : 2026-07-20 (puesta en producción)
Días : 186
Semanas : 26.57
Meses : ~6.16
Caso de uso : Informes de estado, retrospectiva, resumen GanttCálculo de edad en días
Cumpleaños : 1995-03-15
Hoy : 2026-06-11
Días de vida : 11,411
Años (aprox) : 31.24
Meses : ~374.9
Útil cuando se necesita un conteo exacto de días (p. ej. hitos)Advertencia sobre zonas horarias (Tokio vs Los Ángeles)
La misma fecha de calendario '2026-07-15' representa instantes reales diferentes:
Tokio (UTC+9) -> 2026-07-15 00:00 = 2026-07-14 15:00 UTC
Los Ángeles (UTC-7) -> 2026-07-15 00:00 = 2026-07-15 07:00 UTC
Diferencia si se usa de forma ingenua: aproximadamente 16 horas, suficiente para alterar un resultado de 1 día.
Solución: convierte ambas fechas a la misma zona horaria antes de restar.Preguntas frecuentes
¿Cómo se calcula la diferencia entre dos fechas?
Mediante aritmética de calendario: el resultado se muestra como años, meses y días, además del total en semanas, días, horas, minutos y segundos. Los años y los meses se cuentan por aniversarios (el contador de años solo aumenta cuando vuelve a llegar la misma fecha de mes/día) y los días son el número de días naturales entre las dos fechas.
¿Por qué años + meses + días no suma exactamente el total de días?
Porque los meses tienen entre 28 y 31 días. '1 año, 2 meses y 5 días' equivale a un número total de días distinto según si los meses implicados tienen 28, 29, 30 o 31 días. El campo 'total de días' usa aritmética de calendario en bruto y es el valor más preciso.
¿Se incluye el día de inicio o se excluye?
La página da el conteo excluyendo la fecha de inicio: dos fechas idénticas muestran 0 días de diferencia. Si necesitas un conteo 'inclusivo' (por ejemplo, para reservar noches de hotel), suma 1 al resultado manualmente.
¿Se excluyen fines de semana o festivos?
No. Esta página cuenta todos los días naturales. Para diferencias en días hábiles (saltando fines de semana y, opcionalmente, festivos) usa la herramienta 'Calculadora de días laborables'.
¿Por qué la parte de horas se ve rara tras un cambio de horario?
La parte de horas y minutos usa tiempo absoluto, así que cruzar un cambio de horario suma o resta una hora al campo de hora del día. El conteo de días en sí no se ve afectado, porque las diferencias de días son de calendario.
¿Cuál es el rango máximo de fechas que puedo comparar?
El objeto Date de JavaScript abarca ±100.000.000 días desde la época Unix, así que cualquier par de fechas históricas o futuras dentro de aproximadamente ±271.000 años funciona. Las fechas anteriores a 1582 usan aritmética gregoriana proléptica, que difiere del calendario local que se usaba entonces.
¿El cálculo se hace en local?
Sí. Ambas fechas y el resultado se quedan en tu navegador. No se sube ni se registra nada.