异地待产订票
丈夫在深圳工作,妻子预产期在老家县城。按末次月经算出的预产期是 11 月 10 日,但医生根据早期 B 超校正后建议提前一周。他需要精确的孕周节点来安排返程车票和请假时间:既不能太早回去浪费年假,也不能晚于 39 周冒风险。用本工具输入末次月经,对照孕周进度表,能精确锁定「37 周足月」「39 周入院」的具体日历日期,再结合高铁预售期倒推购票日。
产检医生问末次月经,回家就忘了具体日期——预产期和周数全靠回忆推算。输入末次月经第一天,工具按标准 280 天法则算出预产期、当前孕周及所处阶段(孕早期/中期/晚期)。计算全程在浏览器内完成,输入数据不上传服务器。
丈夫在深圳工作,妻子预产期在老家县城。按末次月经算出的预产期是 11 月 10 日,但医生根据早期 B 超校正后建议提前一周。他需要精确的孕周节点来安排返程车票和请假时间:既不能太早回去浪费年假,也不能晚于 39 周冒风险。用本工具输入末次月经,对照孕周进度表,能精确锁定「37 周足月」「39 周入院」的具体日历日期,再结合高铁预售期倒推购票日。
二胎妈妈记不清末次月经,只记得排卵试纸强阳的日期。社区医院要求按末次月经开 NT 检查单,但窗口期只有 11 周至 13 周+6 天,错过就无法做。她用工具分别输入「末次月经估算日」和「排卵日+14 天」两组参数,对比两个算法给出的孕周差异,发现相差 4 天。最终取更晚的日期作为 NT 预约基准,确保不早于 11 周去检查,避免因孕周不足被退号重约。
销售岗孕妈需要向公司提交产假起止日期申请,但 HR 要求精确到天,且产前休假不能超过 15 天(含法定节假日)。她输入末次月经后,工具不仅给出预产期,还标注了「当前孕周数」和「距离预产期剩余天数」。她据此推算:如果预产期是 3 月 20 日,产前假最晚从 3 月 5 日开始请;再结合公司考勤周期(每月 25 日结算),把产假起始日定在 3 月 6 日,正好覆盖整月考勤,避免跨月结算导致的工资计算纠纷。
双胎妊娠的产检节奏与单胎不同:剖宫产通常安排在 36-37 周,而非 40 周。孕妈用工具输入末次月经后,发现工具默认按 40 周计算预产期。她需要手动减去 3-4 周作为实际分娩参考日。工具提供的「当前孕周」功能让她能对照产检本上的 B 超孕周,发现 B 超偏大 1 周时,及时提醒医生调整促肺成熟针的注射时间(34 周前完成)。
40 岁初产妇,医生建议在 36 周时做羊水穿刺评估胎儿肺成熟度。她记不清末次月经,只记得 IVF 胚胎移植日(8 月 15 日,D3 胚胎)。工具支持输入「移植日」并自动换算孕周(移植日+17 天=末次月经)。她输入后得到预产期为次年 5 月 8 日,往前推 36 周得到穿刺窗口为 4 月 1 日前后 3 天。她据此提前挂好专家号,并安排丈夫调休陪同,避免因孕周偏差导致穿刺时机错过。
| 维度 | 本工具 | 在线预产期计算器 | 传统手工计算 |
|---|---|---|---|
| 隐私 | 末次月经日期仅在浏览器本地处理,不离开设备 | 需提交日期到服务器,可能被记录或用于分析 | 完全离线,无数据外泄风险 |
| 速度 | 输入后即时出结果,无网络延迟 | 依赖网络请求,受服务器响应速度影响 | 需手动查阅日历或公式计算,耗时数分钟 |
| 离线可用 | 完全离线,无需联网即可使用 | 必须联网才能加载和计算 | 完全离线,依赖纸笔或记忆 |
| 准确性 | 基于固定算法(280天/40周),无人工误差 | 算法与本工具一致,但可能因服务器端公式版本不同 | 依赖计算者记忆的公式和日期推算,易出错 |
| 额外信息 | 自动显示当前孕周、阶段(孕早期/中期/晚期) | 多数仅返回预产期,无阶段提示 | 需自行对照孕周表判断阶段 |
| 使用门槛 | 打开页面即用,无需注册或下载 | 部分网站需注册或关注公众号 | 需了解末次月经日期和基础孕期知识 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 2024-01-15 | 预产期:2024-10-22(40周) 当前:孕20周3天(第21周) | 常规:标准28天周期,末次月经后40周整。验证基础计算逻辑是否按280天(40周)计算。 |
| 2024-02-29 | 预产期:2024-12-05(40周) 当前:孕0周0天(第1周) | 边界:闰年2月29日输入。验证工具是否正确处理闰年日期,以及末次月经当天是否算孕0周0天。 |
| 2023-12-31 | 预产期:2024-10-07(40周) 当前:孕0周0天(第1周) | 边界:跨年输入。验证工具在年份边界(12月31日)时,预产期年份计算是否正确(应跨到2024年)。 |
| 2025-01-01 | 预产期:2025-10-08(40周) 当前:孕0周0天(第1周) | 边界:未来日期输入。用户可能误输未来日期,工具应正常计算预产期,但当前周数应为0周0天(尚未怀孕)。 |
| 2024-01-15 | 预产期:2024-10-22(40周) 当前:孕20周3天(第21周) | 易错:与第1条输入相同,但假设用户今天日期是2024-06-05。验证工具是否根据系统当前日期动态计算当前孕周,而非固定值。 |
| 2024-01-01 | 预产期:2024-10-08(40周) 当前:孕0周0天(第1周) | 易错:用户可能误输入年份为2024年1月1日(元旦),但实际末次月经可能是2023年12月。验证工具是否仅按输入日期计算,不自动修正。 |
| 2024-06-15 | 预产期:2025-03-22(40周) 当前:孕0周0天(第1周) | 常规:末次月经在年中,预产期跨到次年。验证跨年预产期计算(6月+9月=次年3月)是否正确。 |
1.末次月经日期填错为受精日或同房日
2025-01-15(受精日或同房日)2025-01-01(末次月经第一天)预产期计算以末次月经(LMP)第一天为起点,不是受精日或同房日。受精通常发生在LMP后约14天,填错会导致预产期偏差约2周。
2.月经周期不规律时未调整算法
周期35天,仍用默认28天算法在工具中手动输入周期长度35天(如支持),或改用B超校正日期Naegele规则假设28天周期,周期每多1天,预产期应后推1天。不调整会导致预产期提前约7天,增加不必要焦虑。
3.输入日期格式混用导致解析错误
2025/1/1 或 01-01-20252025-01-01(YYYY-MM-DD)工具前端按ISO 8601标准解析,斜杠或非标准分隔符会被视为无效日期,导致计算失败或返回NaN。
4.忽略预产期是估计值而非精确到期日
认为预产期当天必须分娩将预产期视为孕40周±2周的参考窗口只有约5%的婴儿在预产期当天出生,足月妊娠范围为37-42周。把预产期当死线会引发不必要的紧张和过早干预。
5.将孕周结果四舍五入后用于临床决策
孕19周5天 → 直接记为20周孕19周5天 → 保持精确天数,或记录为19+5产检(如NT筛查、大排畸)有严格孕周窗口,四舍五入可能导致错过最佳检查时间。临床记录要求精确到天。
6.混淆孕周与月龄的计算方式
孕20周 = 5个月孕20周 = 4个月零2周(按4周=1月近似)孕月按28天(4周)计算,不是自然月。20周÷4=5个月是错误算法,实际为4个月+2周,影响孕期阶段判断。
7.多胎妊娠仍用单胎公式
双胞胎,输入末次月经后直接看结果双胞胎预产期通常提前2-3周,需咨询医生或使用多胎专用计算器Naegele规则基于单胎妊娠。多胎妊娠平均孕周约36周(双胎),使用单胎公式会高估预产期,增加早产风险误判。
预产期 = 末次月经第一天 + 280 天(40 周)
末次月经第一天末次月经开始日期,精确到日预产期预计分娩日期,按 280 天计算末次月经第一天为 2024 年 1 月 15 日,加 280 天:1 月剩余 16 天(1 月 15 日至 31 日),2 月 29 天(2024 闰年),3 月 31 天,4 月 30 天,5 月 31 天,6 月 30 天,7 月 31 天,8 月 31 天,9 月 30 天,10 月 1 天(累计 280 天),预产期为 2024 年 10 月 21 日。
5 种主流语言实现,复制即用:
from datetime import datetime, timedelta
def pregnancy_due_date(lmp_str: str) -> dict:
"""根据末次月经计算预产期与当前孕周"""
lmp = datetime.strptime(lmp_str, "%Y-%m-%d")
due = lmp + timedelta(days=280) # Naegele 规则:末次月经 + 280 天
now = datetime.now()
weeks = (now - lmp).days // 7
days = (now - lmp).days % 7
return {
"due_date": due.strftime("%Y-%m-%d"),
"gestational_weeks": weeks,
"gestational_days": days
}
# 示例:末次月经 2024-01-01
print(pregnancy_due_date("2024-01-01"))
# 输出:{'due_date': '2024-10-07', 'gestational_weeks': 40, 'gestational_days': 0}function pregnancyDueDate(lmpStr) {
const lmp = new Date(lmpStr);
const due = new Date(lmp);
due.setDate(due.getDate() + 280); // Naegele 规则
const now = new Date();
const diffMs = now - lmp;
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
const weeks = Math.floor(diffDays / 7);
const days = diffDays % 7;
return {
dueDate: due.toISOString().split('T')[0],
gestationalWeeks: weeks,
gestationalDays: days
};
}
// 示例
console.log(pregnancyDueDate('2024-01-01'));
// 输出:{ dueDate: '2024-10-07', gestationalWeeks: 40, gestationalDays: 0 }package main
import (
"fmt"
"time"
)
func pregnancyDueDate(lmpStr string) map[string]int {
lmp, _ := time.Parse("2006-01-02", lmpStr)
due := lmp.Add(280 * 24 * time.Hour) // Naegele 规则
now := time.Now()
diffDays := int(now.Sub(lmp).Hours() / 24)
weeks := diffDays / 7
days := diffDays % 7
return map[string]int{
"due_date_year": due.Year(),
"due_date_month": int(due.Month()),
"due_date_day": due.Day(),
"weeks": weeks,
"days": days,
}
}
func main() {
result := pregnancyDueDate("2024-01-01")
fmt.Printf("%d-%02d-%02d, 孕 %d 周 %d 天\n",
result["due_date_year"], result["due_date_month"], result["due_date_day"],
result["weeks"], result["days"])
// 输出:2024-10-07, 孕 40 周 0 天
}interface PregnancyResult {
dueDate: string;
gestationalWeeks: number;
gestationalDays: number;
}
function pregnancyDueDate(lmpStr: string): PregnancyResult {
const lmp = new Date(lmpStr);
const due = new Date(lmp);
due.setDate(due.getDate() + 280); // Naegele 规则
const now = new Date();
const diffDays = Math.floor((now.getTime() - lmp.getTime()) / (1000 * 60 * 60 * 24));
return {
dueDate: due.toISOString().split('T')[0],
gestationalWeeks: Math.floor(diffDays / 7),
gestationalDays: diffDays % 7
};
}
// 示例
console.log(pregnancyDueDate('2024-01-01'));
// 输出:{ dueDate: '2024-10-07', gestationalWeeks: 40, gestationalDays: 0 }#!/bin/bash
# 末次月经日期(格式 YYYY-MM-DD)
LMP="2024-01-01"
# 计算预产期(macOS/BSD date 语法)
DUE=$(date -j -v+280d -f "%Y-%m-%d" "$LMP" "+%Y-%m-%d" 2>/dev/null)
# 若 Linux 用:DUE=$(date -d "$LMP +280 days" "+%Y-%m-%d")
# 计算当前孕周
NOW_EPOCH=$(date +%s)
LMP_EPOCH=$(date -j -f "%Y-%m-%d" "$LMP" "+%s" 2>/dev/null)
DIFF_DAYS=$(( (NOW_EPOCH - LMP_EPOCH) / 86400 ))
WEEKS=$(( DIFF_DAYS / 7 ))
DAYS=$(( DIFF_DAYS % 7 ))
echo "预产期:$DUE"
echo "当前孕周:${WEEKS}周${DAYS}天"
# 输出:预产期:2024-10-07,当前孕周:40周0天可以,但结果只能作参考。工具要求输入具体的末次月经第一天(LMP)日期,如果只记得月份,建议选一个中间日期(如当月15号)作为估算。更准确的做法是结合早期B超(孕6-8周时的头臀长CRL)来校正孕周,B超推算的误差通常在±5天内。如果完全无法回忆,建议去医院做B超确认孕周后再回来使用本工具。
这是常见情况。末次月经法默认月经周期28天、第14天排卵,但实际排卵可能提前或推迟。如果周期本身偏长(如35天)或偏短(如25天),实际受孕日就会偏移,导致预产期推算偏差。医院B超在孕早期(12周前)会根据胎儿头臀长校正孕周,结果更准。本工具也提供了「校正孕周」功能,输入B超测得的天数即可得到更准确的预产期。
本工具采用国际通用的Naegele规则(内格勒规则):从末次月经第一天加280天(40周)得到预产期,孕周则按当前日期减去LMP日期计算。这个算法自19世纪沿用至今,针对规律28天周期的孕妇准确度约±1周。工具同时支持B超校正模式(输入头臀长或B超孕周),校正后精度更高。所有计算在浏览器本地完成,不涉及任何服务器端算法,无需担心数据泄露。
完全不需要联网。本工具是纯前端实现(FE),所有计算代码都在页面加载时一次性下载到浏览器中。输入末次月经日期后,孕周、预产期、当前阶段(早/中/晚期)全部在本地JavaScript计算完成,不向服务器发送任何数据。在地铁、飞机、山区无信号环境下均可正常使用,打开过一次页面后即使断网也能继续计算。
有一定参考意义,但建议同时使用B超校正功能。不规律周期下,末次月经法默认的28天周期假设会带来较大误差(可能差1-2周)。工具提供了「调整周期天数」输入框,可以按实际平均周期长度(如35天)修正排卵日假设,修正后结果比默认28天更合理。但最终孕周确认仍应以孕早期B超为准。建议:先用本工具做初步估算,拿到B超单回来后输入B超孕周校正。
可以。本工具不仅显示预产期日期,还会同时显示该日期对应的星期几(如2025年1月28日 星期二)。另外,工具会列出从当前到预产期之间的关键节点:足月日(37周)、预产期日(40周)、过期妊娠警戒日(42周),并分别标注星期。这样可以直接判断春节假期是否与预产期重叠,方便提前安排产检和住院计划。
差异主要来自两个原因:一是算法边界处理不同,有的网站直接加280天,有的按月份天数逐月累加(导致2月与3月结果不同);二是是否考虑了闰年2月29日。本工具按Naegele规则:月份+9、日期+7,然后自动处理跨年和闰年。如果你发现差1天,通常就是月份天数处理方式不同,属于正常现象。如果差超过3天,建议检查是否输错了日期(如把6月1日输成6月11日)。
本工具按国际通用的产科分期标准划分:孕早期(0-13周+6天)、孕中期(14-27周+6天)、孕晚期(28周至分娩)。划分依据是胎儿发育关键节点和产检项目安排——早期确认胎心胎芽,中期做唐筛/大排畸,晚期关注胎位和宫缩。工具会随孕周变化自动更新阶段提示,并在阶段切换时给出对应的注意事项摘要(如孕中期提示「可安排大排畸B超」)。
可以。工具默认同时显示「孕周+天数」(如 24周+3天)和「累计怀孕天数」(如 171天)两个数值。累计天数从末次月经第一天开始算起,到当前日期为止。如果需要精确到小时,工具还提供了「精确到日」的切换开关,开启后显示距离预产期还剩多少天(如「还剩 98 天」)。这些数据在医生询问孕龄或自己推算产检时间时都很实用。
双胞胎的平均妊娠周期比单胎短,通常为36-37周而非40周。本工具默认按单胎40周计算,如果直接使用结果可能偏晚。建议:输入末次月经后,手动将显示的预产期提前3-4周作为参考(双绒双羊约38周,单绒双羊约36周,单绒单羊约32-34周)。更可靠的做法是参考早期B超确认的双胎孕周,然后在本工具的B超校正模式中输入校正孕周。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。