Calculadora de Suma/Resta de Fechas
Añade o resta días, semanas, meses, años a una fecha
Añade o resta días a una fecha
¿Qué es una Calculadora de Suma/Resta de Fechas?
Una calculadora para sumar o restar fechas obtiene una fecha objetivo moviendo una fecha inicial hacia adelante o hacia atrás por días, semanas, meses o años. Sirve para renovaciones, seguimientos, vencimientos de contratos, garantías, recordatorios y planificación de proyectos sin contar manualmente en el calendario. La parte delicada no es sumar días, sino respetar los límites reales del calendario: los meses tienen longitudes distintas, los años bisiestos cambian febrero y una fecha como el 31 de enero no siempre existe en el mes siguiente. La herramienta da un resultado práctico para planificar rápido. Cuenta tiempo calendario, no días laborables, festivos, reglas regionales ni plazos legales especiales.
Cómo usar
Cómo usar
- Introduce la fecha de inicio
- Selecciona sumar (hacia adelante) o restar (hacia atrás)
- Introduce el valor y selecciona una unidad (día/semana/mes/año)
- Haz clic en 'Calcular resultado' para ver la fecha objetivo
Reglas de fechas
- Los cálculos por mes y año pueden caer en meses más cortos; verifica cómo tu regla de negocio maneja fechas como el 31 de enero más un mes.
- Para fechas límite, confirma si los fines de semana, festivos o cortes de fin de día deben modificar la fecha final.
Casos de uso
Principio técnico
La aritmética de fechas en esta herramienta se basa en el calendario gregoriano proléptico tal como lo implementa el objeto Date de ECMAScript. Los meses en JavaScript están indexados desde cero (enero es 0, diciembre es 11), lo cual es la mayor fuente de errores de desfase en código de fechas. Sumar días es sencillo: new Date(d.getTime() + n * 86_400_000). Sumar meses es más difícil porque los meses tienen 28, 29, 30 o 31 días: el patrón estándar date.setMonth(date.getMonth() + n) desborda cuando el mes resultante es más corto que el día de origen, así que el 31 de enero + 1 mes produce el 3 de marzo en lugar del 28 de febrero (el motor traslada los 3 días extra a marzo). Esta herramienta detecta el desborte comparando date.getMonth() después de setMonth y ajusta el día al último día del mes destino cuando es necesario, igualando el comportamiento de moment.js, date-fns y Plain Date.add() de Temporal. Los años bisiestos siguen la regla gregoriana estándar: un año es bisiesto si es divisible por 4, excepto los años de siglo, que deben ser también divisibles por 400. Así, 1900 y 2100 son años comunes, mientras que 2000 fue bisiesto y 2024 también. Esto importa siempre que un cálculo cruce el 29 de febrero: 29 de enero + 1 mes + 1 mes en 2023 da 29 de marzo, pero en 2024 el traspaso pasa por el 29 de febrero (una fecha válida) y luego al 29 de marzo, sin necesidad de ajuste. El corte del año 1582 para la transición juliano-gregoriano se ignora aquí porque el gregoriano proléptico extiende las reglas indefinidamente hacia atrás; las fechas anteriores al 15 de octubre de 1582 son técnicamente anacrónicas pero aun así se calculan correctamente para fines modernos. El manejo de zonas horarias es una dimensión separada: Date almacena un instante UTC internamente y aplica la zona horaria IANA del sistema anfitrión (por ejemplo, America/New_York, Asia/Shanghai) solo al llamar a .getDate(), .month() o .toLocaleString(). De esto se derivan dos trampas: (1) una fecha construida a partir de una cadena ISO sin sufijo Z ("2026-06-10") se interpreta como medianoche UTC, pero "2026-06-10T00:00:00" sin la Z se interpreta como medianoche hora local, y la misma date.getDate() puede devolver 9 o 10 según el desfase del usuario; (2) las transiciones de horario de verano en primavera (saltan 02:00-03:00) y en otoño (repiten 01:00-02:00) hacen que cierta aritmética sea ambigua, por lo que una suma de "+24 horas" puede caer en un reloj que está a 23 o 25 horas de distancia. Para aritmética de días laborables, solo días de semana o con festivos, el resultado calendario aquí debe ser posprocesado contra una lista de festivos específica de la región (por ejemplo, mediante el paquete npm date-holidays o un calendario personalizado) en lugar de depender del traspaso simple.
- Los meses de JS Date están indexados desde cero: enero = 0, diciembre = 11; el error de desfase es el más común.
- Desbordamiento de setMonth: 31 de enero + 1 mes da 3 de marzo, no 28 de febrero; la herramienta ajusta al final del mes comparando getMonth() después de setMonth.
- Año bisiesto: divisible por 4, pero los años de siglo deben ser también divisibles por 400 (así 1900 no, 2000 sí, 2024 sí).
- ISO 8601 sin Z ("2026-06-10T00:00:00") se interpreta como hora local; con Z es UTC, y getDate() puede devolver días distintos.
- Las transiciones de horario de verano crean días de 23 y 25 horas; la suma de +24h no siempre equivale a +1 día calendario.
- El cálculo a nivel de día es exacto mediante getTime() + n * 86_400_000; las unidades mayores se procesan con setMonth/setFullYear y ajuste.
- La aritmética de días laborables y festivos debe aplicarse encima mediante una tabla de calendario regional, no en el motor interno.
Ejemplos
Añadir 90 días a una fecha de inicio (prueba / revisión OKR)
Fecha inicio : 2026-01-15 (jueves)
Operación : + 90 días
Resultado : 2026-04-15 (miércoles)
Caso de uso : Fin de período de prueba de 90 días, revisión de OKR del Q1Restar 6 meses a la fecha de hoy
Fecha inicio : 2026-06-11
Operación : - 6 meses
Resultado : 2025-12-11
Caso de uso : Mirar atrás seis meses para análisis de renovación o churnAñadir 2 años 3 meses 5 días (vencimiento de visado)
Fecha inicio : 2026-01-15
Paso 1 : + 2 años -> 2028-01-15
Paso 2 : + 3 meses -> 2028-04-15
Paso 3 : + 5 días -> 2028-04-20
Resultado : 2028-04-20Ajuste de fin de mes: 31 ene + 1 mes
Fecha inicio : 2026-01-31
Operación : + 1 mes
Resultado : 2026-02-28 (febrero tiene 28 días en 2026)
Verificación de año bisiesto:
Fecha inicio : 2028-01-31
Operación : + 1 mes
Resultado : 2028-02-29 (2028 es año bisiesto)Restar 14 días para un recordatorio de facturación
Renovación de suscripción : 2026-07-01
Operación : - 14 días
Enviar recordatorio el : 2026-06-17Preguntas frecuentes
¿Cómo funciona sumar 'meses' a fechas de fin de mes?
No todos los meses tienen el mismo número de días, así que sumar 1 mes al 31 de enero es ambiguo. La calculadora sigue la convención estándar: ajusta al último día del mes destino, así que 31 de enero + 1 mes = 28 de febrero (o 29 en años bisiestos). Coincide con la función EDATE de Excel.
¿Se cuentan fines de semana y festivos?
Por defecto sí: 'sumar 5 días' añade 5 días de calendario. Para cálculos en días hábiles (saltando fines de semana y, opcionalmente, festivos) usa la herramienta 'Calculadora de días laborables'; esta página solo hace aritmética de calendario en bruto.
¿Puedo sumar años, meses, semanas y días a la vez?
Sí. El resultado los aplica en el orden años → meses → semanas → días, que es la convención que siguen la mayoría de bibliotecas de fechas, incluida la propuesta Temporal de JavaScript. Este orden importa: '1 mes y 30 días' sumados al 1 de enero no dan la misma fecha que '30 días y 1 mes'.
¿Cómo gestiona el horario de verano?
El cálculo opera sobre fechas de calendario, no sobre tiempo absoluto, así que sumar 'un día' cruzando un cambio de horario sigue produciendo la misma hora local. Si necesitas aritmética con precisión de 24 horas, cambia la unidad a horas en lugar de días.
¿Qué rango de fechas se admite?
El objeto Date de JavaScript abarca ±100.000.000 días desde 1970, es decir, aproximadamente desde el año -271.821 hasta el 275.760. La calculadora admite cualquier fecha histórica o muy futura dentro de ese rango. Para fechas anteriores a la reforma del calendario gregoriano (1582), ten en cuenta que los calendarios civiles locales eran distintos.
¿Por qué restar dos fechas es distinto a sumar días negativos?
No lo es: restar N días equivale a sumar -N. Si quieres la diferencia entre dos fechas usa la herramienta 'Diferencia de fechas'. Esta página hace aritmética en una sola dirección: fecha de inicio más o menos una duración.
¿Se sube mi información a algún servidor?
No. El cálculo se ejecuta en tu navegador. Las entradas se borran al recargar la página.