Calculadora de Data de Validade
Calcular data de expiração, gerenciar prazo de validade
O que é Calculadora de Validade?
Calculadora de Data de Validade é uma ferramenta online para calcular datas de expiração ou estimar datas de produção. Digite data de produção e prazo para data exata de validade, ou data de validade para cálculo inverso. Suporta múltiplos produtos com alerta de dias restantes.
Execução local no browser, sem upload, privacidade protegida.
Em cálculos de validade ou expiração, importa saber se a contagem usa dias corridos, dias úteis, meses ou horas fixas. Alimentos, medicamentos, contratos, certificados, cupons e prazos de projeto podem aplicar regras diferentes para dia inicial, dia final, fuso horário e arredondamento. A ferramenta oferece referência rápida, mas prazos legais, médicos ou financeiros devem ser conferidos com a fonte original e a regra aplicável.Como Usar
Como usar
- Selecione o modo de cálculo: Produção→Validade ou Validade→Produção
- Informe a data e os dias de vida útil
- Clique em Calcular para ver os resultados
- Adicione à lista de produtos para gerenciamento em lote
Verificações dos Resultados
- Confirme se a vida útil começa a partir da data de produção, data de embalagem, data de abertura ou data de recebimento; essas regras não são intercambiáveis.
- Para alimentos, medicamentos ou produtos regulamentados, use o rótulo impresso e as regras locais como autoridade final.
Casos de uso
Princípio técnico
A matemática de validade usa aritmética inteira de datas ancorada na data de produção. O caminho direto calcula validade = produção + dias_de_vida_útil usando Date.setDate(date.getDate() + n), que trata a transição de mês e ano nativamente (ex: 2025-01-31 + 30 = 2025-03-02 porque fevereiro tem 28 dias). O caminho inverso calcula produção = validade - dias_de_vida_útil da mesma forma. Para evitar desvio de DST ao redor da meia-noite no horário local, a página ancora a aritmética em UTC via Date.UTC(y, m, d) e adiciona milissegundos inteiros (n * 86400000), porque Date.setDate no horário local cruza limites de DST com um deslocamento de uma hora que pode alterar a data visível nas transições de março e novembro nos EUA, e outubro na UE. As unidades de vida útil são normalizadas para dias antes da adição: 1 mês é tratado como 30 dias e 1 ano como 365 dias, correspondendo à heurística usada na maioria das embalagens de consumo, mas não à regra exata do calendário usada por reguladores. O Codex Alimentarius General Standard for the Labelling of Prepackaged Foods (CXS 1-1985, revisado) e o GB 7718-2025 da China especificam vida útil a partir da data de fabricação ou embalagem; a validade farmacêutica segue as diretrizes de teste de estabilidade ICH Q1A (R2) e arredonda a validade impressa para o último dia do mês (então um medicamento fabricado em 2024-08-15 com vida útil de 18 meses é rotulado 2026-02-28, não 2026-02-15). O contador de dias restantes é (validade_utc - agora_utc) / 86400000 arredondado com Math.floor para dias já decorridos e Math.ceil para tempo até a validade, e a faixa de frescor é uma comparação por limiar: expirado quando restante < 0, expirando em breve quando 0 ≤ restante ≤ 30, fresco caso contrário. A lista de observação persistente vive em window.localStorage sob uma única chave com namespace, serializada via JSON.stringify, que a maioria dos navegadores limita a aproximadamente 5-10 MB por origem (Chrome ~10 MB, Safari ~5 MB). Quando a cota é excedida, o navegador lança uma DOMException com name 'QuotaExceededError', e a página deve recorrer ao estado em memória porque gravações após o lançamento são silenciosamente descartadas. O localStorage também é síncrono e same-origin, então as entradas persistem entre recarregamentos de página mas nunca saem do dispositivo. A API de Notificação do navegador (usada pelo lembrete) requer Notification.requestPermission(), é concedida por origem, e no Chrome no Windows ≥ 86 é exibida através do centro de notificações do sistema operacional em vez do navegador em si.
- Aritmética de datas: Date.setDate(d.getDate() + n) trata transição de mês/ano nativamente, mas no horário local cruza limites de DST e pode alterar a data; Date.UTC + ms inteiros é o caminho seguro.
- Normalização de unidades: 1 mês ≈ 30 dias, 1 ano ≈ 365 dias — simples mas não exato no calendário; rótulos farmacêuticos seguem ICH Q1A (R2) e arredondam para o último dia do mês de validade.
- Dias restantes = Math.floor((validade_utc - agora_utc) / 86400000); limiares: restante < 0 → expirado, 0 ≤ restante ≤ 30 → expirando em breve, caso contrário fresco.
- Âncoras regulatórias variam: vida útil de alimentos segue Codex CXS 1-1985 / GB 7718-2025 (a partir da produção ou embalagem); cosméticos usam PAO (Period After Opening) a partir do primeiro uso; medicamentos usam datação de estabilidade ICH Q1A.
- Vida útil após abertura é independente da validade impressa e é menor (ex: azeite de oliva aberto ~3 meses apesar de 24 meses de vida útil lacrada); acompanhe a data de abertura separadamente.
- A cota do localStorage é ~5-10 MB por origem e lança QuotaExceededError (DOMException) quando cheio; gravações após o lançamento são silenciosamente descartadas, então envolva setItem em try/catch e exiba um aviso ao usuário.
- Desvio do relógio do navegador (data do sistema mal configurada) altera a faixa de frescor; a página lê new Date() em vez de uma fonte de tempo remota, então herda qualquer erro de relógio do lado do cliente.
Exemplos
Fabricação 2026-01-01 + 730 dias = 2027-12-31
Modo: Fabricação -> Validade
Data de fabricação: 2026-01-01
Prazo de validade: 730 dias (2 anos)
Data de validade: 2027-12-31
Status: dentro do prazo de validadeFarmacêutico: validade de 18 meses
Lote do medicamento: A26-0215
Fabricação: 2026-02-15
Prazo de validade: 18 meses (aproximadamente 548 dias)
Validade: 2027-08-15
Observação no rótulo - regra prática farmacêutica: vencer no último dia
do mês, então a data impressa pode ser 2027-08-31Cálculo reverso: Validade -> Fabricação
Modo: Validade -> Fabricação
Validade impressa na embalagem: 2028-06-30
Prazo de validade: 36 meses
Fabricado em ou antes de: 2025-06-30
Use para verificar a data de fabricação alegada por um fornecedor
contra o rótulo do lote.Verificação de armazenamento de alimentos
Item: Azeite de oliva 500ml
Fabricação: 2025-12-01
Prazo de validade: 24 meses
Validade: 2027-12-01
Verificação: dentro do prazo; faça rotação do estoque por FIFO e planeje desconto ~30 dias antes do vencimentoPerguntas frequentes
Como a data de validade é calculada?
Data de fabricação + duração = data de validade. A duração aceita dias, semanas, meses ou anos. Os meses são somados ajustando para o último dia do mês de destino (então 31 de jan + 1 mês = 28/29 de fev), o que combina com a forma como a maioria dos órgãos reguladores interpreta 'X meses a partir da fabricação'.
Os dias restantes são contados a partir de hoje?
Sim. A página mostra os dias, semanas e meses restantes a partir da data de hoje no seu fuso horário local. Números negativos indicam que o produto já passou da validade. O rótulo de status (fresco / próximo do vencimento / vencido) ajuda na triagem rápida.
Qual a diferença entre 'válido até' e 'consumir até'?
'Válido até' (best-before) é uma data de qualidade — o alimento ainda é seguro depois disso, só pode ter perdido o sabor ou a textura ideais. 'Consumir até' (use-by) é uma data de segurança — passar dela pode trazer riscos à saúde. Cosméticos e remédios costumam ter o símbolo PAO (período após abertura), que substitui a validade impressa depois que o produto é aberto.
O resultado leva em conta as condições de armazenamento?
Não. As datas de validade impressas pressupõem o armazenamento recomendado pelo fabricante (fresco, seco, lacrado, refrigerado, congelado). Calor, umidade e luz reduzem a vida útil real e a página não consegue modelar isso. Encare a data calculada como um limite máximo.
Como devo lidar com alimentos ou remédios 'vencidos'?
Para enlatados não abertos e itens secos, um pouco depois do 'válido até' costuma estar tudo bem — confira aparência e cheiro. Laticínios, carnes e peixes que passaram do 'consumir até' devem ser descartados. Remédios vencidos podem perder eficácia e alguns são inseguros; não confie neles para tratamentos sérios.
Posso acompanhar vários produtos?
Abra abas adicionais — cada aba é independente. A página não mantém um inventário salvo. Para acompanhamento contínuo, um app de inventário ou uma planilha simples é mais prático.
Meus dados são enviados para algum servidor?
Não. O cálculo é feito no seu navegador e não é salvo entre sessões.