消費期限計算機
消費期限を計算、商品の賞味期限を管理
消費期限計算機とは?
消費期限計算機はオンラインツールで、商品の消費期限を計算または製造日を推定します。製造日と賞味期限日数を入力すると消費期限が表示され、消費期限から製造日を逆算できます。複数商品の追加、残り日数のリアルタイム表示で食品、医薬品、化粧品の期限管理が簡単。
ブラウザでローカル実行、データアップロード不要、プライバシー保護。
実務で使う場合は、保管温度、開封後の扱い、ロット管理、表示義務なども確認してください。計算結果は期限管理の目安であり、食品表示や医薬品管理の最終判断を置き換えるものではありません。
使い方
使い方
- 計算モードを選択:製造日→賞味期限 または 賞味期限→製造日
- 日付と賞味期限(日数)を入力
- 「計算」をクリックして結果を表示
- 一括管理のため商品リストに追加
結果の確認
- 賞味期限が製造日・包装日・開封日・受領日のいずれから始まるかを確認し、ルールは互いに混同しないでください。
- 食品・医薬品・規制品については、表示ラベルと現地の規則を最優先してください。
利用シーン
仕組み
期限計算は、製造日に基づく整数の日付算術です。順方向パスはexpiry=production+shelf_life_daysをDate.setDate(date.getDate()+n)で計算し、月や年の繰り上がりをネイティブに処理します(例:2025-01-31+30=2025-03-02。2月は28日であるため)。逆方向パスは同じ方法でproduction=expiry-shelf_life_daysを算出します。DST(夏時間)による真夜中のずれを避けるため、ページはDate.UTC(y、m、d)を基準にUTC算術を行い、整数ミリ秒(n×86400000)を加算します。ローカル時刻のDate.setDateはDST境界を1時間のオフセットとともに跨ぐため、米国では3月と11月の切替時、EUでは10月に表示日付が反転する可能性があります。 賞味期限の単位は加算前に日に正規化されます。1ヶ月は30日、1年は365日として処理され、消費者向けパッケージの多くの算出で使われるヒューリスティックに一致しますが、規制当局が使用するカレンダー正確なルールではありません。Codex Alimentariusの一般規格(CXS 1-1985、改訂版)および中国のGB 7718-2025は製造日または包装日からの賞味期限を規定し、医薬品の有効期限はICH Q1A(R2)安定性試験ガイドラインに従い、表示される有効期限を月末に丸めます(例:2024-08-15に製造された18ヶ月賞味期限の医薬品は2026-02-15ではなく2026-02-28と表示)。残日数カウンターは(expiry_utc-now_utc)/86400000で、経過日数はMath.floor、期限までの時間はMath.ceilで丸め、鮮度バンドは閾値比較です。残日数が0未満で期限切れ、0以上30以下で期限間近、それ以外で正常と判定します。 永続的なウォッチリストはwindow.localStorage内に単一の名前空間キーで格納され、JSON.stringifyでシリアライズされます。ほとんどのブラウザはオリジンごとに約5〜10MBを上限としています(Chrome約10MB、Safari約5MB)。クォータ超過時にはブラウザがname 'QuotaExceededError'のDOMExceptionをスローし、ページはメモリストレージにフォールバックする必要があります。スロー後の書き込みはサイレントに破棄されます。localStorageは同期的かつ同一オリジンであるため、エントリはページリロード間で持続しますが、デバイス外には送信されません。リマインダーが使用するブラウザ通知APIはNotification.requestPermission()を必要とし、オリジンごとに許可されます。Windows 86以降のChromeでは、実際にはブラウザではなくOS通知センターを通じて表示されます。
- 日付算術:Date.setDate(d.getDate()+n)は月/年の繰り上がりをネイティブに処理するが、ローカル時刻ではDST境界を跨ぎ日付が反転する可能性がある。安全なパスはDate.UTC+整数ミリ秒。
- 単位正規化:1ヶ月=約30日、1年=約365日。簡易的だがカレンダー正確ではない。医薬品ラベルはICH Q1A(R2)に従い、有効期限の月末に丸める。
- 残日数=Math.floor((expiry_utc-now_utc)/86400000)。閾値:残日数が0未満で期限切れ、0以上30以下で期限間近、それ以外で正常。
- 規制基準は異なる:食品賞味期限はCodex CXS 1-1985/GB 7718-2025(製造日または包装日から)に準拠。化粧品はPAO(開封後使用期限)を初回使用時から開始。医薬品はICH Q1A安定性試験に基づく。
- 開封後賞味期限は表示された有効期限とは独立し、より短い(例:未開封24ヶ月のオリーブオイルも開封後は約3ヶ月)。開封日は別途記録すること。
- localStorageのクォータはオリジンごとに約5〜10MBで、満杯になると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
バッチラベルの製造日と仕入先の主張を照合する用途に活用。食品の在庫チェック
品目: オリーブオイル 500ml
製造日: 2025-12-01
保存期間: 24 か月
賞味期限: 2027-12-01
チェック: 保存期間内。FIFO で在庫を回転させ、期限の約 30 日前に値引きを計画よくある質問
賞味期限はどのように計算されますか?
製造日 + 期間 = 賞味期限です。期間は日、週、月、年の単位で指定できます。月単位の場合は対象月の末日にクランプして加算されます(1 月 31 日 + 1 か月 = 2 月 28/29 日)。これは多くの規制当局が「製造から X か月」を解釈する方法と一致しています。
残り日数は今日から数えられますか?
はい。ローカルタイムゾーンの現在日付を起点に、残りの日数、週数、月数を表示します。負の数値は期限切れを示します。ステータスラベル(新鮮 / 期限間近 / 期限切れ)により、素早く判断できます。
賞味期限と消費期限の違いは何ですか?
賞味期限(best-before)は品質の目安であり、過ぎても安全に食べられますが、風味や食感のピークは過ぎている可能性があります。消費期限(use-by)は安全性の期限であり、過ぎると健康リスクが生じる可能性があります。化粧品や医薬品には「PAO」(開封後使用期間)の表示があり、開封後は印字された期限に優先します。
計算結果は保管条件を考慮していますか?
いいえ。印字された期限は、メーカー推奨の保管条件(涼しく乾燥した場所、密閉、冷蔵、冷凍)を前提としています。熱、湿度、光は実際の賞味期限を短くしますが、ページではこれをモデル化できません。算出された日付は上限として扱ってください。
「期限切れ」の食品や医薬品はどう扱うべきですか?
未開封の缶詰や乾物は、賞味期限を少し過ぎても通常問題ありません。見た目や匂いを確認してください。乳製品、肉、魚で消費期限を過ぎたものは廃棄すべきです。期限切れの医薬品は効能が低下する可能性があり、一部は危険なため、重要な治療には使用しないでください。
複数の製品を追跡できますか?
追加のタブを開いてください。各タブは独立しています。ページは在庫を保存しません。継続的な追跡には、在庫管理アプリやシンプルなスプレッドシートのほうが実用的です。
データはアップロードされますか?
いいえ。計算はブラウザ内で実行され、セッション間で保存されません。