Калькулятор Срока Годности
Расчёт даты истечения, управление сроком хранения
Что такое Калькулятор Срока Годности?
Калькулятор срока годности - онлайн инструмент для расчёта даты истечения или оценки даты производства. Введите дату производства и срок хранения для точной даты истечения, или дату истечения для обратного расчёта. Поддерживает несколько продуктов с напоминанием оставшихся дней.
Локальное выполнение в браузере, без загрузки данных, защита приватности.
В расчетах срока годности или окончания важно понимать, считаются ли календарные дни, рабочие дни, месяцы или фиксированные часы. Продукты, лекарства, договоры, сертификаты, купоны и проектные сроки могут иметь разные правила для начального дня, конечного дня, часового пояса и округления. Инструмент дает быструю ориентировку, но юридически, медицински и финансово значимые сроки нужно сверять с исходной формулировкой и применимым правилом.Как использовать
Как использовать
- Выберите режим расчёта: Производство→Срок годности или Срок годности→Производство
- Введите дату и количество дней хранения
- Нажмите Calculate, чтобы увидеть результат
- Добавьте в список продукции для пакетной обработки
Проверка результатов
- Уточните, с какого момента отсчитывается срок хранения: дата производства, дата упаковки, дата вскрытия или дата получения — эти правила не взаимозаменяемы.
- Для продуктов питания, лекарств и регулируемых товаров руководствуйтесь данными на этикетке и местными нормативами как окончательным ориентиром.
Применение
Технический принцип
Расчёт срока годности — это целочисленная арифметика дат, привязанная к дате производства. Прямой путь вычисляет expiry = production + shelf_life_days с помощью Date.setDate(date.getDate() + n), который нативно обрабатывает переход через границы месяцев и лет (например, 2025-01-31 + 30 = 2025-03-02, поскольку в феврале 28 дней). Обратный путь вычисляет production = expiry - shelf_life_days аналогичным способом. Чтобы избежать смещения DST около полуночи по местному времени, страница привязывает арифметику к UTC через Date.UTC(y, m, d) и прибавляет целые миллисекунды (n * 86400000), потому что Date.setDate в местном времени пересекает границы DST с часовым смещением, которое может перевернуть видимую дату при переходах в марте и ноябре в США, в октябре в ЕС. Единицы срока хранения нормализуются в дни перед сложением: 1 месяц считается как 30 дней, а 1 год — как 365 дней, что соответствует эвристике, используемой на большинстве потребительских упаковок, но не календарно точному правилу регуляторов. Общий стандарт Codex Alimentarius для маркировки фасованных пищевых продуктов (CXS 1-1985, пересмотренный) и китайский GB 7718-2025 указывают срок хранения от даты изготовления или упаковки; срок годности лекарств следует руководствам ICH Q1A (R2) по стабильности и округляет печатный срок до последнего дня месяца (так, лекарство, произведённое 2024-08-15 со сроком хранения 18 месяцев, маркируется 2026-02-28, а не 2026-02-15). Счётчик оставшихся дней — это (expiry_utc - now_utc) / 86400000, округлённый Math.floor для уже истёкших дней и Math.ceil для времени до истечения, а полоса свежести — пороговое сравнение: просрочено при remaining < 0, скоро истекает при 0 ≤ remaining ≤ 30, свежее в остальных случаях. Постоянный список наблюдения хранится в window.localStorage под одним пространством имён, сериализуется через JSON.stringify, который большинство браузеров ограничивает примерно 5–10 МБ на источник (Chrome ~10 МБ, Safari ~5 МБ). При превышении квоты браузер выбрасывает DOMException с именем 'QuotaExceededError', и страница должна вернуться к хранению в памяти, поскольку записи после выброса молча игнорируются. localStorage также синхронный и привязан к источнику, поэтому записи сохраняются при перезагрузке страницы, но никогда не покидают устройство. Notification API браузера (который использует напоминание) требует Notification.requestPermission(), разрешение выдаётся на источник, а в Chrome на Windows ≥ 86 фактически отображается через центр уведомлений ОС, а не через сам браузер.
- Арифметика дат: Date.setDate(d.getDate() + n) нативно обрабатывает переход через месяцы и годы, но в местном времени пересекает границы DST и может перевернуть дату; Date.UTC + целые мс — безопасный путь.
- Нормализация единиц: 1 месяц ≈ 30 дней, 1 год ≈ 365 дней — просто, но не календарно точно; этикетки лекарств следуют ICH Q1A (R2) и округляют до последнего дня месяца истечения.
- Оставшиеся дни = Math.floor((expiry_utc - now_utc) / 86400000); пороги: remaining < 0 → просрочено, 0 ≤ remaining ≤ 30 → скоро истекает, иначе свежее.
- Нормативные ориентиры различаются: срок годности продуктов питания — по Codex CXS 1-1985 / GB 7718-2025 (от производства или упаковки); косметика использует PAO (Period After Opening) с первого применения; лекарства — по ICH Q1A.
- Срок после вскрытия независим от печатного срока годности и короче (например, открытое оливковое масло ~3 месяца при 24-месячном запечатанном сроке); отслеживайте дату вскрытия отдельно.
- Квота localStorage — ~5–10 МБ на источник и выбрасывает QuotaExceededError (DOMException) при заполнении; записи после выброса молча игнорируются, поэтому оборачивайте setItem в try/catch и предупреждайте пользователя.
- Рассинхронизация часов браузера (неверно настроенная системная дата) смещает полосу свежести; страница читает new Date(), а не удалённый источник времени, поэтому наследует любую ошибку часов на стороне клиента.
Примеры
Производство 2026-01-01 + 730 дней = 2027-12-31
Режим: Производство -> Срок годности
Дата производства: 2026-01-01
Срок хранения: 730 дней (2 года)
Дата истечения: 2027-12-31
Статус: ещё в пределах срока годностиФармацевтика: срок годности 18 месяцев
Серия препарата: A26-0215
Производство: 2026-02-15
Срок годности: 18 месяцев (примерно 548 дней)
Истечение: 2027-08-15
Примечание на этикетке — фарм-правило: срок истекает в последний день
месяца, поэтому напечатанная дата может быть 2027-08-31Обратный расчёт: Срок годности -> Производство
Режим: Срок годности -> Производство
Напечатанный срок годности на упаковке: 2028-06-30
Срок хранения: 36 месяцев
Произведено не позднее: 2025-06-30
Используйте это для проверки заявленной поставщиком даты производства
на соответствие маркировке партии.Проверка хранения продуктов
Товар: Оливковое масло 500 мл
Производство: 2025-12-01
Срок годности: 24 месяца
Истечение: 2027-12-01
Проверка: в пределах срока годности; ротация запасов по FIFO и планирование скидки за ~30 дней до истеченияЧасто задаваемые вопросы
Как вычисляется дата истечения срока?
Дата производства + срок годности = дата истечения. Срок можно указать в днях, неделях, месяцах или годах. При добавлении месяцев дата ограничивается последним днём целевого месяца (так что 31 января + 1 месяц = 28/29 февраля), что соответствует тому, как большинство регуляторов трактует фразу «X месяцев с момента производства».
Оставшиеся дни считаются от сегодняшней даты?
Да. Инструмент показывает оставшиеся дни, недели и месяцы от сегодняшней даты в вашем часовом поясе. Отрицательные числа означают, что срок годности уже истёк. Метка статуса (свежий / срок подходит к концу / просрочен) помогает быстро принять решение.
В чём разница между «годен до» и «употребить до»?
«Годен до» — это дата качества: продукт после неё ещё безопасен, просто может потерять вкус или текстуру. «Употребить до» — это дата безопасности: после неё продукт может быть опасен для здоровья. У косметики и лекарств часто есть символ PAO (срок после вскрытия), который заменяет напечатанную дату после открытия упаковки.
Учитываются ли в расчёте условия хранения?
Нет. Напечатанные сроки годности рассчитаны на рекомендованные производителем условия (прохладное, сухое место, герметичная упаковка, холодильник, морозильник). Жара, влажность и свет сокращают реальный срок хранения, и инструмент это смоделировать не может. Считайте рассчитанную дату верхней границей.
Что делать с «просроченной» едой или лекарствами?
Невскрытые консервы и сухие крупы немного после «годен до» обычно безопасны — оцените внешний вид и запах. Молочное, мясо и рыбу после «употребить до» лучше выбросить. Просроченные лекарства могут терять эффективность, а некоторые становятся небезопасными; не полагайтесь на них при серьёзном лечении.
Можно ли отслеживать сразу несколько продуктов?
Откройте дополнительные вкладки — каждая работает независимо. Инструмент не хранит сохранённый список товаров. Для постоянного учёта удобнее приложение для инвентаризации или обычная таблица.
Загружаются ли мои данные?
Нет. Расчёт выполняется в вашем браузере и не сохраняется между сессиями.