使用方法
- 在「上次月经首日」填日历上的那一天,示例 2026-09-03,格式
YYYY-MM-DD,允许 2000-01-01 ~ 2100-12-31。 - 填「平均周期长度」,示例 28 天,允许 21~45 的整数。它指两次月经首日之间的间隔天数,不是经期天数。
- 填「经期天数」,示例 5 天,允许 1~10。它只用来标注出血大概覆盖哪几天,不参与排卵日计算。
- 填「推算周期数」,示例 3,允许 1~12,决定结果表列出未来多少个月。
- 点「按日历法推算日期」,或在任意输入框里直接按 Enter。排卵期日期计算器会在结果区给出每月月经首日、排卵日和窗口区间;下方对照表改一个周期数字,就能看到日期整体平移。
这个排卵期日期计算器能解决什么
一是把「大概在月中」这种口头估算换成可核对的日期。安排复诊、体检、出差、训练计划时,一个能写进日历的具体日期比「差不多那几天」有用得多。
二是把不同周期长度下的日期一次摊开。同样是上次首日 2026-09-03,周期 26 天的人算出排卵日 2026-09-15,周期 32 天的人算出 2026-09-21,两者差了整整 6 天。对照表把 21~45 天全排在一条线上,改一个数看日期怎么走,比反复试错直观。
三是让你看清「日历法」的误差是从哪里冒出来的。它不是测量,而是反推:前提是黄体期固定在 14 天。一旦真实周期在波动,推算结果就跟着漂。本页把这件事写进提示里,而不是丢给你一个看起来精确的日期。
本页不做这些事:不测基础体温、不读排卵试纸、不看宫颈黏液,也不做任何激素或超声相关的判断。排卵期日期计算器只处理日期本身,不承担医学诊断。
推算原理:黄体期 14 天与整数天加减
公式只有一条:排卵日 = 下次月经首日 − 14 天。为什么是「减 14」而不是「加 14」?因为从排卵到下次月经来潮之间那段叫黄体期,长度相对稳定,个体平均约 14 天(常见范围 12~16 天);而排卵日到本次月经首日之间的卵泡期,人和人之间能差出 20 多天。用「下次首日倒推」比用「本次首日正推」稳得多,这是本页唯一的关键取舍,也是它和「按本次首日加 14 天」那类粗算法的分界线。
下次月经首日由 上次月经首日 + 周期长度 得到,两个日期相隔整数天,所以实现上不碰时区,只做整数天加法。本页把日期统一换算成毫秒时间戳:Date.UTC(2026,8,3) 得到 1788393600000,加 n × 86400000 就是第 n 天,再用 getUTCFullYear、getUTCMonth、getUTCDate 拼回 YYYY-MM-DD。
之所以不用 new Date('2026-09-03'),是因为那种字符串会被按 UTC 解析;而 new Date('2026-09-03T00:00:00') 会被按本地时区解析。两者在东八区混用,结果正好差一天,日期计算里最经典的「莫名其妙少一天」就是这么来的。整数天加法没有浮点误差,也不受夏令时影响(中国大陆自 1991 年起不实行夏令时,走 UTC 还能让同一天在别的时区也不漂)。
闰年和跨月全部交给 Date 自己进位:Date.UTC(2028,1,28) 加 2 天得到 2028-03-01(2028 是闰年,2 月有 29 天),2027 年同样操作得到 2027-03-02;跨年也自动处理,2026-12-20 加 28 天是 2027-01-17。这些都不用写判断。
窗口区间由两个生理参数决定。精子在宫颈黏液里最长可存活约 5 天,卵子排出后约 24 小时失去受精能力,所以窗口取「排卵日前 5 天 ~ 排卵日后 1 天」,一共 7 天。这 5 与 1 是本页的固定假设,页面上不开放调节——它们是生理范围,不是可以随喜好设定的参数。
完整示例(数值仅作演示)
示例条件与页面打开时的默认值完全一致:上次月经首日 2026-09-03、周期 28 天、经期 5 天、推算 3 个周期。
- 下次月经首日 = 2026-09-03 + 28 天 = 2026-10-01;
- 排卵日 = 2026-10-01 − 14 天 = 2026-09-17;
- 窗口区间 = 2026-09-17 往前 5 天、往后 1 天 = 2026-09-12 ~ 2026-09-18,共 7 天;
- 第 2 个周期:月经首日 2026-10-29、排卵日 2026-10-15、窗口 2026-10-10 ~ 2026-10-16;
- 第 3 个周期:月经首日 2026-11-26、排卵日 2026-11-12、窗口 2026-11-07 ~ 2026-11-13。
这几组日期随页面打开就出现在结果区,与控件里的 28 天、对照表里「周期 28 天」那一行完全对得上,三处是同一个数。
周期长度与日期对照表
下表固定上次月经首日 2026-09-03,把周期从 21 天到 45 天逐档排开。看两件事:一是平移规律——排卵日 = 上次首日 +(周期 − 14),周期每加 1 天、排卵日就往后挪 1 天;二是窗口始终 7 天宽,不随周期变化。
| 平均周期 | 下次月经首日 | 排卵日 | 窗口区间 |
|---|---|---|---|
| 21 天 | 2026-09-24 | 2026-09-10 | 2026-09-05 ~ 2026-09-11 |
| 22 天 | 2026-09-25 | 2026-09-11 | 2026-09-06 ~ 2026-09-12 |
| 23 天 | 2026-09-26 | 2026-09-12 | 2026-09-07 ~ 2026-09-13 |
| 24 天 | 2026-09-27 | 2026-09-13 | 2026-09-08 ~ 2026-09-14 |
| 25 天 | 2026-09-28 | 2026-09-14 | 2026-09-09 ~ 2026-09-15 |
| 26 天 | 2026-09-29 | 2026-09-15 | 2026-09-10 ~ 2026-09-16 |
| 27 天 | 2026-09-30 | 2026-09-16 | 2026-09-11 ~ 2026-09-17 |
| 28 天 | 2026-10-01 | 2026-09-17 | 2026-09-12 ~ 2026-09-18 |
| 29 天 | 2026-10-02 | 2026-09-18 | 2026-09-13 ~ 2026-09-19 |
| 30 天 | 2026-10-03 | 2026-09-19 | 2026-09-14 ~ 2026-09-20 |
| 31 天 | 2026-10-04 | 2026-09-20 | 2026-09-15 ~ 2026-09-21 |
| 32 天 | 2026-10-05 | 2026-09-21 | 2026-09-16 ~ 2026-09-22 |
点「加载更多周期」把剩下 13 档(33~45 天)补上;点「导出 CSV」存成带 BOM 的表格,Excel 打开不乱码;点「复制对照表」复制成制表符分隔的文本,可以直接粘进表格软件。
边界与精度说明
- 周期只收 21~45 天。低于 21 或高于 45 会被直接拒绝,因为「黄体期固定 14 天」的前提在这两端基本不成立:周期 20 天意味着卵泡期只剩 6 天,周期 46 天则常见于无排卵周期,减出来的日期没有参考价值。
- 经期天数 1~10 只影响标注。它不进任何公式,改它不会让排卵日动一天。
- 推算 1~12 个周期。推得越远越不可靠:日历法不测量,只按固定周期外推,第 12 个周期建立在「接下来 11 个月周期完全一样」这个几乎不可能成立的假设上。
- 周期不规律时误差成倍放大。同一个人某月 26 天、另一月 32 天,同一个上次首日算出的排卵日分别是 2026-09-15 和 2026-09-21,相差 6 天;把两端各 7 天的窗口并起来是 13 天,比单周期的 7 天宽了 1.86 倍。窗口一旦宽到十几天,它就几乎不再携带信息。
- 结果不能用于避孕。上面这个例子里,误差本身就与窗口同宽。排卵期日期计算器给出的是「最可能」的日期区间,不是「安全 / 危险」的开关;把它当避孕依据,等于用一个宽度并不确定的窗口去赌一次性的结果。需要避孕请就医咨询,选择有明确失败率数据的方法。
- 时区无关,但日期必须是真实存在的日历日。输入走 UTC 整数天,跨时区看到的日期一致;2026-02-30 这类不存在的日期会被格式校验拦下,不会被静默进位成 3 月 2 日。
- 结果不保存、不上传。全部日期都在你的浏览器里算完,刷新或关掉标签页就没有记录;在公共设备上用完直接关掉即可。
常见问题
为什么是「下次月经首日 − 14 天」,而不是「本次首日 + 14 天」?
因为黄体期(排卵到下次月经来潮)相对稳定,个体平均约 14 天,波动多在 12~16 天;而卵泡期(本次首日到排卵)在人和人之间能差出二十多天。倒推法只用到一个稳定的量,正推法却要依赖一个高度可变的量,所以本页选前者。
我的周期不规律,还能用吗?
能用来画个大致范围,但别当结论。周期在 26~32 天之间摆动时,同一段推算的排卵日会散开约 6 天,两段 7 天窗口并起来就是 13 天。周期波动越大,这里给出的日期越接近「一个季度里大概那几周」,而不是某一天。
算出来的日期能用来避孕吗?
不能。本页是日历法的日期推算,输出的是一个宽度固定的假设窗口,不是排卵的实测信号。一旦周期波动,真实排卵日就可能落在窗口之外。需要避孕请咨询医生,选用有明确失败率统计的方法。
为什么周期限制在 21~45 天?
因为「黄体期固定 14 天」这个前提只在常见范围内近似成立。周期短于 21 天,倒推出来的卵泡期只剩几天;长于 45 天,往往对应不排卵的周期,减 14 得到的日期没有意义。超出范围时本页会报错,而不是硬算一个数给你。
经期天数会影响排卵日吗?
不会。经期天数只在结果里帮助你识别出血大概覆盖哪几天,完全不进入「下次月经首日 − 14」这条公式。你把 5 改成 7,排卵日和窗口都不会移动。
推算 12 个周期可靠吗?
越往后越不可靠。第 1 个周期只依赖一次已知的首日和一个周期长度;第 12 个周期还要假设中间 11 次月经的间隔都必须一模一样。周期偶尔波动几天是常态,所以建议只看最近 1~3 个周期,后面的当作粗略参考。
为什么日期要按 UTC 算,会不会差一天?
正因为走 UTC 的整数天加法,才不会差一天。常见的坑是把 new Date('2026-09-03')(按 UTC 解析)和 new Date('2026-09-03T00:00:00')(按本地时区解析)混着用,两者在东八区正好差一天。本页统一用 Date.UTC 取时间戳再加整数天,所以你在哪个时区打开,看到的日期都一样。
输入的数据会上传吗?
不会。日期换算全部在浏览器里完成,没有任何网络请求,也不写浏览器存储。想自行确认,打开开发者工具的网络面板,改几次参数,可以看到没有新的请求发出。