通过MCP连接 →

输入计算

数学公式

广告

结果

你出生那天是
Tuesday
星期几
Your next birthday (2027) Monday

这个计算器能做什么

你有没有好奇过,自己出生的那天是星期几——是悠闲的周日,还是忙碌的周一?这款出生日期星期几计算器能告诉你出生当天准确的星期,还会顺便算出你下一个生日落在星期几。它适用于公历(格里高利历)中的任意日期。

日历上高亮的出生日期指向某个星期标签
计算器可将任意出生日期对应到星期几。

使用方法

填入出生年份,从下拉菜单中选择出生月份,再输入出生日期,然后点击"计算"。顶部结果框会显示你出生那天是星期几,下方表格则会显示你即将到来的生日是星期几,方便你提前张罗庆生派对。

公式原理

本工具采用蔡勒公式(Zeller's congruence),这是一种用于推算任意日期是星期几的经典算法。在计算时,1 月和 2 月会被视为上一年的第 13 月和第 14 月。公式会算出一个数值 h,其中 0 代表星期六,1 代表星期日,依此类推。我们再把它转换成大家熟悉的"周日到周六"顺序进行显示。由于全程使用纯整数运算,结果精确无误,绝不会出现偏差。

$$ h = \left( D + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor + 5J \right) \bmod 7 $$ $$ \text{where}\quad \left\{ \begin{aligned} D &= \text{Birth Day} \\ m &= \text{Month}\ \ (\text{Jan,Feb} \to 13,14\text{ of prior year}) \\ Y &= \text{Birth Year}\ (\text{adjusted}) \\ K &= Y \bmod 100,\quad J = \left\lfloor Y/100 \right\rfloor \end{aligned} \right. $$
示意图展示蔡勒公式的变量 d、m、k、j 汇入对 7 取模的结果
蔡勒公式将日期拆分为各个分量,再相加并对 7 取模。

计算示例

以 1990 年 7 月 15 日为例。此时 \(m = 7\),\(d = 15\),年份为 1990,所以 \(k = 90\),\(j = 19\)。代入得 $$ h = (15 + \lfloor 13\cdot 8/5 \rfloor + 90 + \lfloor 90/4 \rfloor + \lfloor 19/4 \rfloor + 5\cdot 19) \bmod 7 = (15 + 20 + 90 + 22 + 4 + 95) \bmod 7 = 246 \bmod 7 = 1 $$,即星期日。也就是说,1990 年 7 月 15 日出生的人,出生那天正是星期日。

变量定义

  • \(D\) — 月份中的日期。 日历日期的确切数字,从1到31。\(D\)永远不进行任何调整。
  • \(m\) — 调整后的月份号。 3月=3至12月=12按原样使用。1月和2月很特殊: 它们被视为前一年的第13和14个月。这是因为Zeller同余式把3月作为年度的开始,这样可以将闰日保持在周期的末尾。
  • \(Y\) — 调整后的年份。 如果日期在1月或2月,从日历年份中减去1(因为这些月份在本方案中属于前一年)。其他所有月份保持原始年份。
  • \(K\) — 世纪年份。 \(K = Y \bmod 100\),即调整后年份的最后两位数字。对于2024,这是24;对于1999,这是99。
  • \(J\) — 零基世纪。 \(J = \lfloor Y / 100 \rfloor\),不进行舍入的世纪号。对于2024,这是20;对于1999,这是19。
  • \(h\) — 结果日期代码。 组合所有项后模7的余数,给出0–6的值,使用上述结果代码表映射到星期。

更多详细示例

示例1 — 1月日期(展示月份和年份的变换)

2000年1月15日。因为月份是1月,设\(m = 13\)并使用前一年,因此调整后的年份是\(Y = 1999\)。然后\(D = 15\),\(K = 1999 \bmod 100 = 99\),和\(J = \lfloor 1999/100 \rfloor = 19\)。

$$h = \left(15 + \left\lfloor \tfrac{13(13+1)}{5} \right\rfloor + 99 + \left\lfloor \tfrac{99}{4} \right\rfloor + \left\lfloor \tfrac{19}{4} \right\rfloor + 5 \cdot 19 \right) \bmod 7$$

取整项为\(\lfloor 182/5 \rfloor = 36\)、\(\lfloor 99/4 \rfloor = 24\)和\(\lfloor 19/4 \rfloor = 4\)。求和:\(15 + 36 + 99 + 24 + 4 + 95 = 273\)。然后\(273 \bmod 7 = 0\),所以\(h = 0\) → 星期六。2000年1月15日确实是星期六

示例2 — 闰日生日(2000年2月29日)

对于2000年2月29日,2月也进行了变换:\(m = 14\)且调整后的年份是\(Y = 1999\),给出\(K = 99\)、\(J = 19\)和\(D = 29\)。

$$h = \left(29 + \left\lfloor \tfrac{13(14+1)}{5} \right\rfloor + 99 + \left\lfloor \tfrac{99}{4} \right\rfloor + \left\lfloor \tfrac{19}{4} \right\rfloor + 5 \cdot 19 \right) \bmod 7$$

这里\(\lfloor 195/5 \rfloor = 39\)、\(\lfloor 99/4 \rfloor = 24\)、\(\lfloor 19/4 \rfloor = 4\)。求和:\(29 + 39 + 99 + 24 + 4 + 95 = 290\),且\(290 \bmod 7 = 3\),所以\(h = 3\) → 星期二。2000年2月29日是星期二。注意2000年是闰年,因为它能被400整除。

示例3 — 近期日期(2023年7月4日)

对于2023年7月4日,7月是普通月份,所以\(m = 7\)且不改变年份:\(Y = 2023\)、\(D = 4\)、\(K = 23\)、\(J = 20\)。

$$h = \left(4 + \left\lfloor \tfrac{13(7+1)}{5} \right\rfloor + 23 + \left\lfloor \tfrac{23}{4} \right\rfloor + \left\lfloor \tfrac{20}{4} \right\rfloor + 5 \cdot 20 \right) \bmod 7$$

取整项为\(\lfloor 104/5 \rfloor = 20\)、\(\lfloor 23/4 \rfloor = 5\)、\(\lfloor 20/4 \rfloor = 5\)。求和:\(4 + 20 + 23 + 5 + 5 + 100 = 157\),且\(157 \bmod 7 = 3\),所以\(h = 3\) → 星期二。2023年独立日是星期二

常见问题

它适用于很久以前的日期吗?可以,它适用于外推格里高利历(proleptic Gregorian calendar)中的任意日期。需要注意的是,1582 年历法改革之前的日期,可能与采用儒略历的历史记录有所出入。

闰年是如何处理的?蔡勒公式通过模运算自动处理闰年,因此 2 月 29 日这样的日期也能被准确计算。

如果我今年的生日已经过了怎么办?如果你今年的生日已经过了,下一个生日的结果会自动顺延到明年。

最后更新: