使用方法
- 在「末次月经首日」里选那一次月经开始的第一天,不是结束那天,也不是同房那天。默认已经填好示例值 2026-01-01。
- 在「周期长度」里填你两次月经首日相隔的天数,默认 30 天,允许 20~45 的整数。一直是 28 天的人填 28,修正项就是 0。
- 点「计算预产期」,或者在任意输入框里直接按 Enter,结果立刻刷新。
- 结果区是四张卡片:预产期、距预产期天数、足月窗口(39 周 0 天~40 周 6 天)的起止日期、满 42 周 0 天的日期;下面一行小字给出修正项与累计天数。
- 再往下是周期 20~45 天的对照表,默认显示 12 行,点「加载更多」补齐余下 14 行;点「导出 CSV」得到带 BOM 的表格文件,点「复制对照表」把整张表以制表符形式放进剪贴板,可以直接粘进 Excel。
这个预产期计算器能解决什么问题
一是把日期一次算清。产检本、请假单、待产清单上要填的是同一件事,但往往要重复填好几个地方,事后改动很麻烦;一次算准再复制,比反复翻日历稳。
二是回答「还剩多少天」。剩余天数按你打开页面的当天实时计算,不用自己数日历格。临近时它会从「还有 9 天」自动变成「已超过 3 天」,卡片标题也跟着换。
三是把 39~40 周的窗口给出来。多数人只知道预产期是某一天,却不知道 2013 年之后「足月」不再是一个点而是一段区间:39 周 0 天到 40 周 6 天。安排陪产、交接工作、订返程票,按区间安排比按单日安排合理得多。
四是处理「周期不是 28 天」。这是最容易出错的一步:周期 35 天的人如果直接套 280 天,预产期会被算早 7 天;周期 21 天会被算晚 7 天。修正项就是「个人周期减去 28」。
本页不做这些事:不判断胎儿发育是否正常、不生成产检时间表、不做超声头臀长(CRL)校正、不推算受孕日与同房时间。需要后面几项的,交给产科医生。
计算原理:Naegele 法则、280 天的构成与周期修正
公式本体一句话:预产期 = 末次月经首日 + (280 + 周期长度 − 28) 天。周期恰好 28 天时括号里就是 280。这个来源叫 Naegele 法则,是产科沿用至今的默认口径,ACOG 与世界卫生组织都以 40 周 0 天、也就是 280 天,作为预产期基准。
280 天是怎么凑出来的。标准 28 天周期里,受孕一般落在第 14 天前后;从受孕到分娩的平均时长是 266 天。14 + 266 = 280。也就是说,这 280 天并不是从「怀孕那一刻」起算,而是从末次月经首日起算的,开头那 14 天其实还没有怀孕——这正是很多人第一次用预产期计算器时最困惑的地方。
为什么周期不是 28 天就必须修正。公式里的 280 把「第 14 天受孕」写死了。周期 35 天的人,受孕更可能发生在第 21 天前后,比标准晚一周,整条时间轴往后平移 7 天,预产期跟着 +7;周期 21 天的人则要 −7。修正项只跟周期长度有关,跟经期持续几天无关,跟最后一次同房日期也无关。
口诀版和加天数版并不完全等价。教科书上写的 Naegele 法则常常是「末次月经首日 + 1 年 − 3 个月 + 7 天」这个口诀。它在 28 天标准周期上正好等于加 280 天,但它加的是日历月,月份长度不固定,结果就未必对齐。把 2026 年 365 个日期逐个代进去试算:有 154 个日期两种算法给出不同结果,口诀版一律比加 280 天晚 1~3 天,最大偏差 3 天。举个具体的:末次月经首日 2026-03-01,口诀算出 2026-12-08,加 280 天算出 2026-12-06。本工具统一按加 280 天算,与 ACOG 的 40 周口径一致;如果你在别处看到差 1~3 天,多半就是口诀与天数之争。
内部实现只有整数天加法。实现时先把日期字符串解析成年、月、日三个整数,用 Date.UTC 组装成零时区的时间戳,再用毫秒加减 86400000 的整数倍,输出时同样按零时区格式化。这样跨夏令时切换日、或者在别的时区打开页面,都不会出现「差一天」。中国没有夏令时,这条主要是给旅游时用手机打开的人兜底。
足月四段来自 ACOG 2013 年的第 579 号委员会意见,它把原本笼统的「足月」拆成四段:早期足月 37 周 0 天~38 周 6 天(第 259~272 天)、足月 39 周 0 天~40 周 6 天(第 273~286 天)、晚期足月 41 周 0 天~41 周 6 天(第 287~293 天)、过期 42 周 0 天及以上(第 294 天起);不满 37 周 0 天即第 259 天,算早产。本页卡片里的「足月窗口」指的是第二段,也就是预产期前 7 天到后 6 天。
约 4% 这个数字要记住:真正在预产期当天分娩的人大约只有 4%,也就是一百位产妇里大约四位。把预产期当成「就是那一天」,落空的概率是 96%。
完整示例(数值仅作演示)
示例条件与页面打开时的默认值完全一致:末次月经首日 2026-01-01、周期长度 30 天。
- 修正项 = 30 − 28 = +2 天;
- 累计天数 = 280 + 2 = 282 天;
- 预产期 = 2026-01-01 加 282 天 = 2026-10-10;
- 足月窗口 39 周 0 天~40 周 6 天 = 2026-10-03 ~ 2026-10-16;
- 早期足月 37 周 0 天~38 周 6 天 = 2026-09-19 ~ 2026-10-02;
- 晚期足月 41 周 0 天~41 周 6 天 = 2026-10-17 ~ 2026-10-23;
- 满 42 周 0 天、也就是第 294 天,从 2026-10-24 起算;
- 以 2026-10-01 打开页面时,距预产期还有 9 天,从末次月经首日起算已过 273 天——这一项每天都会变,只有上面几个日期是固定的。
把周期换成 28 天、其余不动:累计天数回到 280,预产期变成 2026-10-08,足月窗口变成 2026-10-01 ~ 2026-10-14。下面对照表里「周期 28 天」和「周期 30 天」两行显示的就是这两个结果;控件默认值、本段文字、对照表用的是同一组数字,可以互相核对。
周期长度与预产期对照表
下表固定末次月经首日为默认示例 2026-01-01,逐档列出周期 20~45 天时的修正项、累计天数与预产期。「修正」一栏是「个人周期 − 28」,负数表示预产期要提前;最后两列是 ACOG 定义的足月窗口。
| 周期长度 | 修正天数 | 累计天数 | 预产期 | 足月窗口起 | 足月窗口止 |
|---|---|---|---|---|---|
| 20 天 | -8 | 272 天 | 2026-09-30 | 2026-09-23 | 2026-10-06 |
| 21 天 | -7 | 273 天 | 2026-10-01 | 2026-09-24 | 2026-10-07 |
| 22 天 | -6 | 274 天 | 2026-10-02 | 2026-09-25 | 2026-10-08 |
| 23 天 | -5 | 275 天 | 2026-10-03 | 2026-09-26 | 2026-10-09 |
| 24 天 | -4 | 276 天 | 2026-10-04 | 2026-09-27 | 2026-10-10 |
| 25 天 | -3 | 277 天 | 2026-10-05 | 2026-09-28 | 2026-10-11 |
| 26 天 | -2 | 278 天 | 2026-10-06 | 2026-09-29 | 2026-10-12 |
| 27 天 | -1 | 279 天 | 2026-10-07 | 2026-09-30 | 2026-10-13 |
| 28 天(基准) | 0 | 280 天 | 2026-10-08 | 2026-10-01 | 2026-10-14 |
| 29 天 | +1 | 281 天 | 2026-10-09 | 2026-10-02 | 2026-10-15 |
| 30 天(默认示例) | +2 | 282 天 | 2026-10-10 | 2026-10-03 | 2026-10-16 |
| 31 天 | +3 | 283 天 | 2026-10-11 | 2026-10-04 | 2026-10-17 |
| 32 天 | +4 | 284 天 | 2026-10-12 | 2026-10-05 | 2026-10-18 |
| 33 天 | +5 | 285 天 | 2026-10-13 | 2026-10-06 | 2026-10-19 |
| 34 天 | +6 | 286 天 | 2026-10-14 | 2026-10-07 | 2026-10-20 |
| 35 天 | +7 | 287 天 | 2026-10-15 | 2026-10-08 | 2026-10-21 |
| 36 天 | +8 | 288 天 | 2026-10-16 | 2026-10-09 | 2026-10-22 |
| 37 天 | +9 | 289 天 | 2026-10-17 | 2026-10-10 | 2026-10-23 |
| 38 天 | +10 | 290 天 | 2026-10-18 | 2026-10-11 | 2026-10-24 |
| 39 天 | +11 | 291 天 | 2026-10-19 | 2026-10-12 | 2026-10-25 |
| 40 天 | +12 | 292 天 | 2026-10-20 | 2026-10-13 | 2026-10-26 |
| 41 天 | +13 | 293 天 | 2026-10-21 | 2026-10-14 | 2026-10-27 |
| 42 天 | +14 | 294 天 | 2026-10-22 | 2026-10-15 | 2026-10-28 |
| 43 天 | +15 | 295 天 | 2026-10-23 | 2026-10-16 | 2026-10-29 |
| 44 天 | +16 | 296 天 | 2026-10-24 | 2026-10-17 | 2026-10-30 |
| 45 天 | +17 | 297 天 | 2026-10-25 | 2026-10-18 | 2026-10-31 |
两端的差距不小:周期 20 天得到 2026-09-30,周期 45 天得到 2026-10-25,同一个末次月经首日,预产期前后相差 25 天。这也是为什么产科一定会先问周期长度,而不是直接套 280 天。注意累计天数从 272 一直到 297,而 280 天只是其中一行——所谓「280 天」是 28 天周期的特例,不是所有妊娠的统一长度。
输入范围、边界与精度说明
- 末次月经首日必须在 2000-01-01 到今天之间。选到明天或下个月会被拒绝:那一天还没有发生,算出来的日期没有意义。年份早于 2000 也会被拒绝,因为 280 天公式是给当前这一次妊娠用的。
- 日期距今超过 300 天时会给提示,但不是报错。妊娠满打满算 280 天,超过 300 天通常意味着已经分娩很久,或者年份选错;工具照算,只提醒你确认一下。
- 周期长度取 20~45 的整数。小于 20 天或大于 45 天的记录,多半是把不规则出血当成了月经首日,或者把上一次的结束日记成了这一次的开始;这种情况下 280 天公式本身就不成立,建议改填最近三次的平均值再算。
- 公式的前提是自然受孕、单胎、周期基本规律。辅助生殖按胚胎移植日推算、多胎妊娠、周期波动超过 7 天的人,产科会用早孕期超声的头臀长(CRL)反推,8~13 周那一次最准,其结论优先级高于末次月经法。本页只能给末次月经口径的数字。
- 精度到「天」,到不了小时。同一份输入在任何时区、任何夏令时制度下都会得到同一个日期,这是刻意做的取舍:宁可所有人结果一致,也不追求「精确到小时」的假精度。
- 本页是日期算术工具,不是医疗建议。它不评估胎儿状况,也不预测具体分娩时刻。出现规律宫缩、破水、出血、胎动明显减少等情况,请直接联系产科,不要先来算日期。
常见问题
预产期当天一定会生吗?
大概只有 4% 的人正好在预产期当天分娩。按 ACOG 的口径,39 周 0 天到 40 周 6 天都算足月,所以更实用的做法是把「足月窗口」当成计划区间。本页卡片第二行到第四行显示的就是预产期、窗口起止和过期起点。
我的周期是 35 天,需要改哪个数?
把「周期长度」改成 35,修正项自动变成 +7,预产期整体后移 7 天。以默认的 2026-01-01 为例,周期 28 天算出 2026-10-08,周期 35 天算出 2026-10-15,对照表里「35 天」那一行就是这一档。
为什么另一个网站算出来和我差 1~3 天?
多半是口诀与天数之争。用「+1 年 − 3 个月 + 7 天」的口诀算,跨过 2 月的日期会多加 1~3 天;2026 年的 365 个日期里有 154 个存在这种偏差,最大 3 天。本页按加 280 天算,和 ACOG 的 40 周口径一致,两个数字都对,只是口径不同。
末次月经首日记不清了怎么办?
别靠猜。早孕期超声测头臀长(CRL)反推的预产期比估算出来的末次月经准得多,8~13 周那次尤其准,产科的结论优先于本页。如果只是想先有个大致范围,可以把几种可能的首日在工具里各试一次,看预产期落在一个多宽的区间里,再拿去和医生确认。
「足月」到底从哪天算起?
按 ACOG 2013 年的定义分四段:37 周 0 天~38 周 6 天是早期足月,39 周 0 天~40 周 6 天是足月,41 周 0 天~41 周 6 天是晚期足月,满 42 周 0 天起为过期。换算成天数分别是第 259~272 天、273~286 天、287~293 天,以及第 294 天起。
已经过了预产期,这个工具还能算吗?
能。输入不变时结果是固定日期,不会因为「已经超过」就拒绝显示;剩余天数会变成负数,卡片标题从「距预产期」变成「已超过预产期」。至于 41~42 周之间怎么处理,属于临床判断,本页不介入。
要填的是月经开始那天还是结束那天?
开始那天。两者通常差 3~7 天,直接换算成预产期的偏差就是这么多。如果只记得「大概是那周的周四」,先挑一个日期算,再拿超声结果校正,不要为了凑准而反复改日期。
我填的日期会被上传或保存吗?
不会。这个预产期计算器全部在浏览器本地做整数天加法,没有任何网络请求,也不写入浏览器存储;刷新页面后输入框会回到默认的 2026-01-01 与 30 天。想验证可以打开开发者工具的 Network 面板,点几次「计算预产期」看有没有请求发出。