Calculadora de Fecha de Caducidad
Calcular fechas de expiración y gestionar vida útil de productos
¿Qué es Calculadora de Caducidad?
Calculadora de Fecha de Caducidad es una herramienta online que ayuda a calcular fechas de expiración o estimar fechas de producción. Ingresa fecha de producción y días de vida útil para obtener la fecha exacta de caducidad, o ingresa fecha de caducidad para calcular la fecha de producción. Soporta agregar múltiples productos con recordatorio de días restantes.
Esta herramienta funciona localmente, sin subir datos, protegiendo tu privacidad.
En cálculos de caducidad o vencimiento importa si se cuentan días naturales, días hábiles, meses o horas fijas. Alimentos, medicamentos, contratos, certificados, cupones y plazos de proyecto pueden aplicar reglas distintas para día inicial, día final, zona horaria y redondeo. La herramienta ofrece una referencia rápida, pero en plazos legales, médicos o financieros conviene contrastar el resultado con la fuente original y la regla aplicable.Cómo usar
Cómo usar
- Selecciona el modo de cálculo: Producción→Vencimiento o Vencimiento→Producción.
- Introduce la fecha y los días de vida útil.
- Haz clic en Calcular para ver los resultados.
- Añade a la lista de productos para gestión por lotes.
Comprobaciones de resultados
- Confirma si la vida útil se cuenta desde la fecha de producción, fecha de envasado, fecha de apertura o fecha de recepción; estas reglas no son intercambiables.
- Para alimentos, medicamentos o productos regulados, utiliza la etiqueta impresa y las normativas locales como autoridad final.
Casos de uso
Principio técnico
El cálculo de caducidad es aritmética de fechas enteras anclada a la fecha de producción. La ruta directa calcula caducidad = producción + dias_vida_util usando Date.setDate(date.getDate() + n), que maneja el cambio de mes y año de forma nativa (ej. 2025-01-31 + 30 = 2025-03-02 porque febrero tiene 28 días). La ruta inversa calcula producción = caducidad - dias_vida_util de la misma manera. Para evitar la deriva del horario de verano alrededor de la medianoche local, la página ancla la aritmética a UTC mediante Date.UTC(y, m, d) y suma milisegundos enteros (n * 86400000), porque Date.setDate en hora local cruza los límites del horario de verano con un desfase de una hora que puede cambiar la fecha visible en las transiciones de marzo y noviembre en EE.UU., octubre en la UE. Las unidades de vida útil se normalizan a días antes de la suma: 1 mes se trata como 30 días y 1 año como 365 días, coincidiendo con la heurística usada en la mayoría de envases de consumo pero no con la regla exacta del calendario que usan los reguladores. El Norma General del Codex Alimentarius para el Etiquetado de Alimentos Preenvasados (CXS 1-1985, revisada) y la norma china GB 7718-2025 especifican la vida útil desde la fecha de fabricación o envasado; la caducidad farmacéutica sigue las directrices de pruebas de estabilidad ICH Q1A (R2) y redondea la caducidad impresa al último día del mes (así un medicamento fabricado el 2024-08-15 con 18 meses de vida útil se etiqueta como 2026-02-28, no 2026-02-15). El contador de días restantes es (caducidad_utc - ahora_utc) / 86400000 redondeado con Math.floor para días ya transcurridos y Math.ceil para el tiempo hasta la caducidad, y la banda de frescura es una comparación por umbral: caducado cuando restante < 0, próximo a caducar cuando 0 <= restante <= 30, fresco en caso contrario. La lista de seguimiento persistente vive en window.localStorage bajo una única clave con espacio de nombres, serializada mediante JSON.stringify, que la mayoría de navegadores limitan a unos 5-10 MB por origen (Chrome ~10 MB, Safari ~5 MB). Cuando se excede la cuota, el navegador lanza un DOMException con name 'QuotaExceededError', y la página debe recurrir al estado en memoria porque las escrituras después del error se descartan silenciosamente. localStorage también es síncrono y del mismo origen, por lo que las entradas persisten entre recargas de página pero nunca abandonan el dispositivo. La API de notificaciones del navegador (que usa el recordatorio) requiere Notification.requestPermission(), se concede por origen, y en Chrome en Windows >= 86 se muestra a través del centro de notificaciones del sistema operativo en lugar del navegador en sí.
- Aritmética de fechas: Date.setDate(d.getDate() + n) maneja el cambio de mes/año de forma nativa, pero en hora local cruza los límites del horario de verano y puede cambiar la fecha; Date.UTC + ms enteros es la ruta segura.
- Normalización de unidades: 1 mes = 30 días, 1 año = 365 días — simple pero no exacta en el calendario; las etiquetas farmacéuticas siguen ICH Q1A (R2) y redondean al último día del mes de caducidad.
- Días restantes = Math.floor((caducidad_utc - ahora_utc) / 86400000); umbrales: restante < 0 -> caducado, 0 <= restante <= 30 -> próximo a caducar, de lo contrario fresco.
- Los anclajes regulatorios varían: la vida útil alimentaria sigue Codex CXS 1-1985 / GB 7718-2025 (desde producción o envasado); los cosméticos usan PAO (Period After Opening) desde el primer uso; los medicamentos usan la datación de estabilidad ICH Q1A.
- La vida útil tras la apertura es independiente de la caducidad impresa y es más corta (ej. aceite de oliva abierto ~3 meses a pesar de 24 meses de vida útil sellada); lleva un registro de la fecha de apertura por separado.
- La cuota de localStorage es de ~5-10 MB por origen y lanza QuotaExceededError (DOMException) cuando está lleno; las escrituras después del error se descartan silenciosamente, así que envuelve setItem en try/catch y muestra una advertencia al usuario.
- El desfase del reloj del navegador (una fecha del sistema mal configurada) desplaza la banda de frescura; la página lee new Date() en lugar de una fuente de hora remota, por lo que hereda cualquier error de reloj del lado del cliente.
Ejemplos
Producción 2026-01-01 + 730 días = 2027-12-31
Modo: Producción -> Caducidad
Fecha de producción: 2026-01-01
Vida útil: 730 días (2 años)
Fecha de caducidad: 2027-12-31
Estado: aún dentro de la vida útilFarmacéutico: vida útil de 18 meses
Lote del medicamento: A26-0215
Producción: 2026-02-15
Vida útil: 18 meses (aprox. 548 días)
Caducidad: 2027-08-15
Nota de etiquetado: por convención farmacéutica, la caducidad se fija el último día
del mes, por lo que la fecha impresa puede figurar como 2027-08-31Cálculo inverso: Caducidad -> Producción
Modo: Caducidad -> Producción
Caducidad impresa en el envase: 2028-06-30
Vida útil: 36 meses
Producido el o antes del: 2025-06-30
Úsalo para verificar la fecha de producción declarada por un proveedor
contra la etiqueta del lote.Comprobación de almacenamiento de alimentos
Producto: aceite de oliva 500ml
Producción: 2025-12-01
Vida útil: 24 meses
Caducidad: 2027-12-01
Comprobación: dentro de la vida útil; rota el inventario por FIFO y planifica un descuento ~30 días antes de la caducidadPreguntas frecuentes
¿Cómo se calcula la fecha de caducidad?
Fecha de fabricación + duración = fecha de caducidad. La duración admite días, semanas, meses o años. Los meses se suman fijando al último día del mes destino (así que 31 ene + 1 mes = 28/29 feb), que es como la mayoría de reguladores interpretan «X meses desde la fabricación».
¿Los días restantes se cuentan desde hoy?
Sí. La página muestra los días, semanas y meses restantes desde la fecha de hoy en tu zona horaria local. Los números negativos indican que el producto ya caducó. La etiqueta de estado (fresco / próximo a caducar / caducado) ayuda a clasificar de un vistazo.
¿Cuál es la diferencia entre «consumir preferentemente antes» y «fecha de caducidad»?
«Consumir preferentemente antes» es una fecha de calidad: el alimento sigue siendo seguro después, solo puede haber perdido sabor o textura. «Fecha de caducidad» es de seguridad: pasarse puede suponer un riesgo para la salud. Cosméticos y medicamentos suelen llevar el símbolo PAO (período tras la apertura) que sustituye a la caducidad impresa una vez abiertos.
¿El resultado tiene en cuenta las condiciones de almacenamiento?
No. Las fechas de caducidad impresas asumen el almacenamiento recomendado por el fabricante (fresco, seco, sellado, refrigerado, congelado). El calor, la humedad y la luz acortan la vida útil real y la página no puede modelar eso. Trata la fecha calculada como un límite superior.
¿Cómo gestiono comida o medicinas «caducadas»?
Las conservas y los productos secos sin abrir, ligeramente pasados de la fecha de consumo preferente, suelen estar bien: revisa aspecto y olor. Lácteos, carne y pescado pasados de la fecha de caducidad deben desecharse. Los medicamentos caducados pueden perder potencia y algunos son inseguros; no confíes en ellos para tratamientos serios.
¿Puedo controlar varios productos a la vez?
Abre pestañas adicionales: cada pestaña es independiente. La página no guarda inventario. Para un seguimiento continuo, una app de inventario o una hoja de cálculo es más práctica.
¿Se suben mis datos a algún servidor?
No. El cálculo se ejecuta en tu navegador y no se guarda entre sesiones.