到期日计算器

按生产日期与保质期推算到期日:按天、按月、按年三种单位,两种起算口径都算出来给你对照。按月与按年加减会手动夹到该月最后一天,2 月 29 日生产加 12 个月会落到次年的 2 月 28 日,不会像 JS 的 setMonth 那样溢出到 3 月。

口径 A 与口径 B 相差 1 天:默认示例下分别是 2026-08-27 与 2026-08-28。
生产日期 2026-03-01 保质期 180 天 口径 A(生产当天算第 1 天):2026-08-27 口径 B(生产次日算第 1 天):2026-08-28 -- 与今天 2026-10-13 的关系 -- 口径 A:已过期 47 天,剩余 0 天 保质期跨度 179 天(A)/ 180 天(B) 剩余比例 0.00 个百分点 → 已过期
常见保质期对照表共 20 行,默认显示 12 行。

默认示例里今天(2026-10-13)晚于到期日,正好演示「已过期」这一支。想看剩余比例,把今天改到 2026-08-01 再算一次。整页不联网、不上传。

使用方法

  1. 打开页面已经填好生产日期 2026-03-01、保质期 180 天、按天、口径 A、今天 2026-10-13,结果区给出两个口径的到期日。点「推算」,或在数字框里按回车,结果立刻刷新。
  2. 「保质期数值」范围 1 到 10950(30 年),步长 1。填了小数或超出范围会给出指明原因的提示。
  3. 单位三选一:按天、按月、按年。按月与按年走「对应日」口径,并且会夹到该月最后一天——2025-01-31 加 1 个月得 2025-02-28,不是 3 月 3 日。
  4. 起算口径二选一:口径 A 认为生产当天算第 1 天,到期日 = 生产日 + 天数 − 1;口径 B 认为生产次日算第 1 天,到期日 = 生产日 + 天数。默认示例下两者分别是 2026-08-27 与 2026-08-28。
  5. 「今天」默认 2026-10-13,请改成实际日期再算剩余天数与剩余比例。
  6. 「开盖日期」与「开盖后使用期」成对填写,用于算开盖后使用期那条独立的时间线;只填其中一个会给出指名缺哪个的提示。
  7. 结果区分三层:上面一行是两个口径的到期日,中间是明细(跨度天数、与今天的关系、剩余比例、临期判定),下面在有开盖数据时多出一条开盖后使用期。
  8. 下面的常见保质期对照表共 20 行,默认显示 12 行。点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的文件;「复制对照表」复制正文那张起算口径表。

这个 Expiration日期计算器能解决什么问题

第一类是把包装上的「保质期 180 天」换成具体某一天。生产日期印在瓶底、保质期写在侧面,心算跨月很容易错一天,而差一天在临期盘点上就是合规与不合规的区别。这一页把两种起算口径都算出来,让你按产品的执行标准挑一个。

第二类是月末的坑。保质期按「月」标注时,1 月 31 日生产的东西加 1 个月没有 2 月 31 日,只能落到 2 月 28 日;2024 年 2 月 29 日生产、保质期 12 个月的东西,2025 年没有 2 月 29 日,只能落到 2 月 28 日。这类日期越界是程序里最常见的 bug,本页手动夹紧,不会像 JS 的 setMonth 那样把 1 月 31 日加 1 个月变成 3 月 3 日。

第三类是临期盘点。剩余天数本身不好比——30 天的保质期剩 10 天和 3 年的保质期剩 10 天完全不是一回事——换成剩余比例才可比。本页给出剩余比例并标出常见的两个阈值。

第四类是开盖后的第二条时间线。化妆品、药品、食用油这类产品开封之后的可用期与生产日期无关,只从开盖那天算起。两条线取更早的那个,本页分开算并提示取早者。

计算原理与变量说明

整页只有两条公式,加一个夹紧规则。

变量公式说明
口径 A 到期日生产日 + 天数 − 1生产当天算第 1 天
口径 B 到期日生产日 + 天数生产次日算第 1 天
按月 / 按年对应日,再夹到该月最后一天两种口径落在同一天
剩余比例剩余天数 ÷ 跨度天数 × 100单位是百分点
开盖后使用期开盖日 + 月数(对应日)与生产日独立

起算日到底算不算第一天——两种口径差 1 天,这是本页的核心。口径 A 认为生产当天就是保质期的第 1 天,到期日 = 生产日 + 天数 − 1;口径 B 认为生产次日才是第 1 天,到期日 = 生产日 + 天数。同样是 2026-03-01 生产:加 30 天时 A 得 2026-03-30、B 得 2026-03-31;加 180 天时 A 得 2026-08-27、B 得 2026-08-28;加 365 天时 A 得 2027-02-28、B 得 2027-03-01。国标 GB 7718 对保质期起算的表述要按具体产品标准执行,本页不能替你选,所以两个都算。

按「月」标注走对应日口径,月末不足就落回该月最后一天。生产 2025-03-31 加 12 个月得 2026-03-31;但生产 2025-01-31 加 1 个月,2 月只有 28 天,只能落 2025-02-28;生产 2024-02-29 加 12 个月,2025 年没有 2 月 29 日,只能落 2025-02-28。这是日期库最常见的越界 bug:JS 的 setMonth 会自动溢出,1 月 31 日加 1 个月会变成 3 月 3 日,凭空多出两天。本页先算出目标年月、再取该月天数与原日号的较小值,全程手动夹紧,不用 setMonth。另外按月与按年时,起算日是否计入已经包含在「对应日」这个口径里,所以两种口径落在同一天。

剩余比例比剩余天数更有用。生产 2026-07-13、到期 2027-04-13、今天 2026-10-13:剩余 182 天、跨度 274 天,剩余比例 66.42 个百分点;生产 2026-10-01、到期 2026-11-13、今天 2026-10-13:剩余 31 天、跨度 43 天,剩余比例 72.09 个百分点。两组剩余天数差 6 倍,但比例差不多。常见做法是剩余比例低于 33.33 个百分点视作临期、低于 20 个百分点通常要求下架或专区销售——各地与连锁超市的规定并不一致,中国也没有全国强制统一值,本页只是把阈值算出来供参考。

开盖后使用期是与生产日完全独立的一条时间线。欧盟化妆品法规 (EC) 1223/2009 要求标注开盖后使用期,写成 6M、12M 的开罐小图标。2026-10-13 开封、12M 的保质期,开盖后到期日是 2027-10-13。一瓶 2027 年到期的面霜,2026 年 10 月开封后可能 2027 年 10 月就该扔——两条线取更早的那个,本页分开算并提示取早者。

完整示例(数值仅作演示)

默认示例:生产 2026-03-01、保质期 180 天。口径 A 得 2026-08-27,口径 B 得 2026-08-28,两者相差 1 天。跨度分别是 179 天与 180 天。

把今天填成 2026-08-01 再看:距口径 A 到期还有 26 天,剩余比例 26 ÷ 179 = 14.53 个百分点,已跌破 20 个百分点这一档,属于专区销售区间。

月末那组:生产 2025-01-31、按月、1 个月,得 2025-02-28;生产 2024-02-29、按年、1 年,得 2025-02-28;生产 2025-03-31、按月、12 个月,得 2026-03-31。三行都是手动夹紧的结果。

开盖那组:生产 2026-03-01、保质期 180 天(到期 2026-08-27),开盖 2026-10-13、12M → 开盖后到期 2027-10-13。但开盖日已经在保质期到期日之后,说明这瓶东西开封时本身已经过期,页面会提示先按更早的那条线处理。

常见保质期对照表

第一张表是两种起算口径的对照,「复制对照表」复制的就是它。

保质期生产日期口径 A口径 B相差
30 天2026-03-012026-03-302026-03-311 天
180 天2026-03-012026-08-272026-08-281 天
365 天2026-03-012027-02-282027-03-011 天
1 个月2025-01-312025-02-282025-02-280 天
12 个月2024-02-292025-02-282025-02-280 天
12 个月2025-03-312026-03-312026-03-310 天

第二张表是剩余比例与临期判定,用来说明为什么比例比天数好用。

场景剩余跨度剩余比例判定
乳制品 2026-07-13 产,2027-04-13 到期18227466.42正常
面包 2026-10-01 产,2026-11-13 到期314372.09正常
临期阈值——33.33低于算临期
下架 / 专区阈值——20低于通常下架

第三张表是开盖后使用期(PAO),与生产日那条线并列。

场景开盖日PAO开盖后到期
面霜 6M2026-10-136 个月2027-04-13
面霜 12M2026-10-1312 个月2027-10-13
法规依据(EC) 1223/20096M / 12M开罐小图标
取早原则两条线—取更早的那一天

读法:第一张看两种口径差在哪,第二张看剩余比例与阈值,第三张看开盖那条独立的时间线。

结果边界、舍入与适用说明

常见问题

两种口径到底差几天?

差 1 天。口径 A 认为生产当天算第 1 天,到期日 = 生产日 + 天数 − 1;口径 B 从次日算起。2026-03-01 加 180 天时分别是 2026-08-27 与 2026-08-28。

1 月 31 日加 1 个月会变成几月几日?

2025-02-28。2 月没有 31 日,本页先算目标年月再夹到该月最后一天。用 JS 的 setMonth 会溢出成 3 月 3 日,那是错的。

2024 年 2 月 29 日生产,保质期 12 个月?

2025-02-28。2025 年不是闰年,2 月 29 日的对应日不存在,只能落到 28 日。

按月标注时两种口径还差 1 天吗?

不差。按月与按年走对应日口径,起算日是否计入已经包含在「对应日」里,所以两种口径落在同一天。

为什么看比例而不是看剩余天数?

因为 30 天保质期剩 10 天与 3 年保质期剩 10 天完全不是一回事。按剩余比例:182/274 = 66.42 个百分点、31/43 = 72.09 个百分点,这才可比。

临期与下架的阈值是多少?

常见做法:低于 33.33 个百分点视作临期,低于 20 个百分点通常要求下架或专区销售。各地与连锁超市规定不一,中国没有全国强制统一值,本页只负责算出来。

开盖后的日期怎么算?

从开盖日单独起算,与生产日无关。2026-10-13 开封、12M 得 2027-10-13。两条线取更早的那个。

输入的日期会上传吗?

不会。日期只在本页脚本里参与天数加减,没有发起任何网络请求,也没有写入本地存储。

相关工具