ToolActToolAct

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

  1. Introduce la fecha de inicio
  2. Introduce la fecha de fin
  3. Haz clic en 'Calcular intervalo' para comparar ambas fechas
  4. 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

Medir la diferencia exacta en días entre dos fechasSelecciona las fechas de inicio y fin y calcula el intervalo en días, con totales adicionales en semanas, meses aproximados, años aproximados, horas, minutos y segundos. El cálculo sigue las reglas gregorianas, así que 1900 se trata como año común y 2000 como año bisiesto, lo que importa cuando alguno de los extremos está cerca del 29 de febrero.
Comprobar el tiempo transcurrido para eventos y registrosÚsalo para suscripciones, periodos de servicio, duración de viajes, líneas temporales de proyectos, aniversarios, rachas de estudio y cualquier registro donde contar manualmente a través de meses sea propenso a errores. Conserva las dos fechas fuente junto al resultado para que el intervalo pueda verificarse más tarde, ya que un '36 meses' declarado es mucho más difícil de auditar que el par de inicio y fin original.
Usar los valores aproximados de meses y años con precauciónEl resultado principal son los días. Los valores de meses y años son resúmenes aproximados, por lo que los periodos de facturación, la edad legal y las reglas contractuales deben usar la regla específica que el contexto requiera. Usa los valores aproximados como orientación, no para decisiones finales de política. Los números de semana ISO, donde la semana 1 contiene el primer jueves del año, son otra convención que el simple conteo de días no produce por sí solo.
Decidir entre conteo inclusivo y exclusivo antes de citar la diferenciaPara rangos de vacaciones y periodos de prueba, acuerda de antemano si ambos extremos se cuentan y luego etiqueta el resultado como 'entre' o 'que abarca' para que los informes legales, de RR. HH. y finanzas no diverjan. La diferencia de un día parece trivial en un solo rango, pero se acumula en las exportaciones de RR. HH., nómina y finanzas cuando la convención no se aplica en todas partes.
Verificar los meses aproximados contra el calendario específicoCuando un ciclo de facturación, periodo de prueba o ventana de garantía se define en meses o años, ejecuta el mismo par a través de una regla que conozca el calendario para confirmar que el valor aproximado coincide con la política. Mezclar las dos unidades en el mismo informe es una fuente habitual de disputas contractuales, especialmente en renovaciones B2B de SaaS donde el mismo cliente está en un plan de 30 días y otro de mes calendario. Las cláusulas de aniversario que dicen '12 meses desde la fecha de inicio' suelen significar exactamente un año calendario, no 365 días, así que un inicio el 15 de enero se convierte en el 15 de enero del año siguiente, no el 14 ni el 16.

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ías

Duració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 Gantt

Cá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.