使用方法
- 在「末次月经首日」里选那一次月经开始的第一天,不是结束那天。默认已经填好示例值 2026-01-01。
- 在「参考日期」里填你想查的那一天,默认是示例值 2026-10-01;想查今天就把这里改成今天,卡片第一行会跟着变。
- 在「目标孕周」里填一个整数周,默认 20,允许 0~42。它是反推方向的输入:给定周数,让工具告诉你那一天是几月几号。
- 点「计算孕周」,或者在任意输入框里按 Enter,四张卡片立刻刷新:参考日期的孕周(整周 + 余天)、预产期、距预产期天数、目标孕周对应的日期。
- 再往下是孕周 4~42 周的日期对照表,每 2 周一档共 20 行,默认显示 12 行,点「加载更多」补齐;「导出 CSV」得到带 BOM 的表格,「复制对照表」把整表以制表符放进剪贴板,可以直接粘进 Excel。
这个孕周计算器能解决什么问题
一是把「今天是几周几天」一次说清。产检本、请假单、母子健康手册上要填的其实是同一个数,但每次都得自己数:从末次月经首日往后数满整周,余下的零头单列。孕周的规范写法是「整周 + 天」,比如 39 周 0 天、24 周 3 天。本页直接给出这个格式,省掉拆算。
二是预产期与孕周的双向换算。顺着算,知道末次月经首日就得到预产期;倒着算,给定一个孕周就得到它落在哪一天。这两件事朝着相反方向用同一个式子,本页把它们放在同一组控件里,不用中途换公式。
三是把常见的时间点落到日历上。12 周、20 周、28 周、37 周这些数字在产检单上反复出现,但「12 周是几月几号」每次都要重数一遍。对照表把它们一次列全,20 行覆盖 4 周到 42 周。
四是避免把孕周与受孕天数混为一谈。孕周从末次月经首日起算,受孕通常发生在两周之后,两者天然差着大约 14 天。口径用错,所有日期会整体偏移两三周,而且偏得很隐蔽——看上去只是「差几天」。
本页不做这些事:不判断胎儿发育是否正常、不给产检项目清单、不做超声头臀长(CRL)校正、不推算受孕日与同房时间。需要后面几项的,交给产科医生。
计算原理:孕周怎么数、预产期怎么反推
孕周的定义只有一个减法。设末次月经首日为 L、参考日期为 R,先求两者之间的整数天数 d = R − L,再令孕周 = Math.floor(d / 7) 周 + d % 7 天。取整周用 Math.floor,取零头用取余,两步都是整数运算,不做四舍五入。默认值为例:2026-01-01 到 2026-10-01 正好 273 天,273 ÷ 7 = 39 余 0,所以是 39 周 0 天。
为什么锚点是 280 天而不是 266 天。40 周 × 7 = 280 天,这是 WHO 与 ACOG 采用的预产期口径。另一套常被引用的数字是 266 天,那是「从受孕到分娩」的平均时长;两者相差 14 天,正是因为末次月经首日到受孕之间那两周也被计入了孕周。所以孕周 20 周的人,实际受孕大约只有 18 周——这个差值不是误差,是定义本身带来的。
三个方向的公式其实是同一个。顺推预产期:L + 280。由孕周反推日期:L + 7 × 目标孕周。由预产期反推末次月经首日:预产期 − 280。三条都只是「整数天加法」加一个乘 7,只要口径一致,正推与反推必然互相对上。本页第四张卡片走的就是第二条,第一张卡片走的是除法那一半。
为什么「周 + 天」的零头不能丢。39 周 6 天与 40 周 0 天只差一天,却分属两个区间;只写「39 周」会把后面六天的信息抹掉。孕周每差 1 周等于 7 天,每差 1 天就是 1 天,两者不能互换。本页卡片与对照表全部保留「周 + 天」或明确的日期,就是为了不丢这个零头。
日期运算全部走 UTC。实现时先把日期串按 /^(\d{4})-(\d{2})-(\d{2})$/ 解析成年、月、日三个整数,用 Date.UTC 组装成零时区时间戳,再用毫秒数加减 86400000 的整数倍,输出时同样按零时区格式化。这样跨闰年 2 月 29 日、跨年、或者换个时区打开页面,结果都不会差一天。抽查两例:末次月经首日 2024-02-29 加 280 天得到 2024-12-05;末次月经首日 2025-12-20 加 280 天得到 2026-09-26,一个跨过闰日、一个跨过年。
本页刻意不做个人化修正。公式里的 280 天默认按 28 天标准情形理解,不叠加任何偏移项。如果你的周期长年不规律,或者走的是辅助生殖路径(按胚胎移植日推算),产科会用早孕期超声的头臀长反推,8~13 周那一次最准,其结论优先级高于本页。本页只给标准口径的数字。
标准与口径:日期格式采用 ISO 8601 的 YYYY-MM-DD;孕周的书写规范来自产科病历惯例,即「整周 + 余天」;40 周与 280 天来自 WHO 与 ACOG 的通用口径。三者都不是本页自创的。
完整示例(数值仅作演示)
示例条件与这个孕周计算器打开时的默认值完全一致:末次月经首日 2026-01-01、参考日期 2026-10-01、目标孕周 20 周。
- 天数差 = 2026-10-01 − 2026-01-01 = 273 天;
- 孕周 = 273 ÷ 7 = 39 余 0,即 39 周 0 天;
- 预产期 = 2026-01-01 + 280 天 = 2026-10-08;
- 参考日期距预产期 = 2026-10-08 − 2026-10-01 = 7 天;
- 进度 = 273 ÷ 280 = 97.5%;
- 目标孕周 20 周 0 天 = 2026-01-01 + 7 × 20 = 2026-01-01 + 140 天 = 2026-05-21;
- 几个常见节点:12 周 0 天 = 2026-03-26,28 周 0 天 = 2026-07-16,37 周 0 天 = 2026-09-17,41 周 0 天 = 2026-10-15,42 周 0 天 = 2026-10-22。
把参考日期改成 2026-05-21、其余不动,卡片第一行会变成 20 周 0 天,正好与第四张卡片对上——这两张卡片本来就是同一个式子朝两个方向读的结果。对照表里「20 周」那一行显示 2026-05-21 至 2026-05-27,与控件默认值和本段文字用的是同一组数字,可以互相核对。
孕周与日期对照表
下表固定末次月经首日为默认示例 2026-01-01,逐档列出孕周 4~42 周(每 2 周一档,共 20 行)的该周首日、该周末日与距末次月经首日的天数。「该周首日」指该孕周的 0 天,「该周末日」指该孕周的 6 天,两者相隔整 6 天。
| 孕周 | 该周首日(X 周 0 天) | 该周末日(X 周 6 天) | 距末次月经首日 | 备注 |
|---|---|---|---|---|
| 4 周 | 2026-01-29 | 2026-02-04 | 28 天 | — |
| 6 周 | 2026-02-12 | 2026-02-18 | 42 天 | — |
| 8 周 | 2026-02-26 | 2026-03-04 | 56 天 | — |
| 10 周 | 2026-03-12 | 2026-03-18 | 70 天 | — |
| 12 周 | 2026-03-26 | 2026-04-01 | 84 天 | 早期筛查窗口参考点 |
| 14 周 | 2026-04-09 | 2026-04-15 | 98 天 | — |
| 16 周 | 2026-04-23 | 2026-04-29 | 112 天 | — |
| 18 周 | 2026-05-07 | 2026-05-13 | 126 天 | — |
| 20 周 | 2026-05-21 | 2026-05-27 | 140 天 | 系统超声参考点 |
| 22 周 | 2026-06-04 | 2026-06-10 | 154 天 | — |
| 24 周 | 2026-06-18 | 2026-06-24 | 168 天 | — |
| 26 周 | 2026-07-02 | 2026-07-08 | 182 天 | — |
| 28 周 | 2026-07-16 | 2026-07-22 | 196 天 | 进入孕晚期 |
| 30 周 | 2026-07-30 | 2026-08-05 | 210 天 | — |
| 32 周 | 2026-08-13 | 2026-08-19 | 224 天 | — |
| 34 周 | 2026-08-27 | 2026-09-02 | 238 天 | — |
| 36 周 | 2026-09-10 | 2026-09-16 | 252 天 | — |
| 38 周 | 2026-09-24 | 2026-09-30 | 266 天 | — |
| 40 周 | 2026-10-08 | 2026-10-14 | 280 天 | 预产期 40 周 0 天 |
| 42 周 | 2026-10-22 | 2026-10-28 | 294 天 | 过期 42 周 0 天 |
孕周与天数是严格的线性关系:每往后一周,日期就往后推 7 天。从 4 周到 42 周跨越 266 天,整整 38 周;表中「距末次月经首日」一列也从 28 天一路涨到 294 天。所以只要拿到末次月经首日,任何一个孕周落在哪一天都可以直接读表,不必反复算。反过来也成立:哪天是几周几天,拿日期减一下就出来了。
输入范围、边界与精度说明
- 两个日期的年份都限制在 2000~2100。范围之外会被直接拒绝,因为孕周公式是给当前这一次妊娠用的,上百年前的日期没有意义。
- 参考日期不能早于末次月经首日。早于它意味着「怀孕天数为负」,工具会明确报错,而不是给出一个负孕周。
- 参考日期距末次月经首日超过 300 天时会给提示,但不是报错。满打满算 280 天,超过 300 天通常意味着年份选错,或者已经分娩很久;工具照算,只提醒你确认一下。
- 目标孕周取 0~42 的整数。小数、字母、空值与越界都会被拒绝并指出是哪一项。下限 0 对应末次月经首日当天;上限 42 周已经是过期口径的边界,再往后临床意义不大。
- 精度到「天」,到不了小时。同一份输入在任何时区、任何夏令时制度下都会得到同一个日期,这是刻意做的取舍:宁可所有人结果一致,也不追求「精确到小时」的假精度。
- 本页固定按 280 天换算,不叠加个人化偏移。周期长年不规律、或者走辅助生殖路径的人,产科会用早孕期超声的头臀长反推,其结论优先级高于本页。
- 本页是日期算术工具,不是医疗建议。它不评估胎儿状况,也不预测具体分娩时刻。出现规律宫缩、破水、出血、胎动明显减少等情况,请直接联系产科,不要先来算日期。
常见问题
孕周和受孕天数是一回事吗?
不是,两者相差大约 14 天。孕周从末次月经首日起算,受孕一般发生在两周之后;按 WHO 与 ACOG 的口径,预产期是末次月经首日加 280 天,而不是受孕后 280 天。所以本页给出的 20 周 0 天,对应实际受孕大约只有 18 周。
为什么我算出的孕周和超声报告差几天?
多半是口径不同。本页按末次月经首日的 280 天口径推算;超声测量的是胎儿实际大小,在 8~13 周通过头臀长(CRL)反推出的孕周,误差通常比回忆末次月经首日更小,所以产科会把超声结论作为准。两者差几天属于常见情况,以临床结论为准。
怎么由孕周反推具体日期?
把「目标孕周」填成你要的整数周,卡片第四行就是答案,公式是末次月经首日 + 7 × 孕周。以默认的 2026-01-01 为例,20 周 0 天落在 2026-05-21,28 周 0 天落在 2026-07-16,40 周 0 天正好是预产期 2026-10-08。
孕周为什么写成「39 周 0 天」而不是「39 周」?
因为零头有临床意义。39 周 6 天与 40 周 0 天只差一天,却分属两个区间;只写整周会把后面六天丢掉。孕周每差 1 周等于 7 天,写法上把周和天分开,换算时才不会出错。本页所有输出都保留「周 + 天」或直接给出日期。
跨年或者闰年会把日期算错吗?
不会。这个孕周计算器把日期解析成年、月、日三个整数后用 Date.UTC 组装成零时区时间戳,再按 86400000 毫秒的整数倍加减,最后按零时区格式化。末次月经首日 2024-02-29 加 280 天得到 2024-12-05,2025-12-20 加 280 天得到 2026-09-26,跨闰日与跨年都正常。
想要某一个孕周的产检时间,用这张表够吗?
够用来定位日期,但不够用来安排项目。对照表只回答「12 周是哪一天」这类问题,具体做什么检查、隔多久复查,由产科按个人情况决定。表中备注一栏只是为了标注参考点,不是产检清单。
已经过了预产期还能算吗?
能。把参考日期填成当天,孕周会超过 40 周,卡片第三行的标题从「距预产期」变成「已超过预产期」,数字是超出天数。公式本身不设上限,只有年份 2100 的硬边界。至于 41~42 周之间怎么处理,属于临床判断,本页不介入。
我填的日期会被上传或保存吗?
不会。这个孕周计算器全部在浏览器本地做整数天加法,没有任何网络请求,也不写入浏览器存储;刷新页面后输入框会回到默认的 2026-01-01、2026-10-01 与 20 周。想验证可以打开开发者工具的 Network 面板,点几次「计算孕周」看有没有请求发出。