这个计算器有什么用

输入任意日期,立刻就能知道它是星期几(周一到周日)。无论是筹备纪念日、安排日后的约会、查证某个历史事件发生在星期几,还是单纯想知道某一天落在星期几,都能派上用场。

计算原理

本工具采用"外推格里高利历"(proleptic Gregorian calendar)——也就是把现代公历向前一直推算到历史早期,而不考虑各地区实际何时开始采用这套历法。程序内部调用 Java 的 LocalDate.getDayOfWeek() 来计算星期,该方法没有计算误差,对 \(\pm 10^6\) 范围内的任意年份都准确无误。

诸如蔡勒公式(Zeller's Congruence)和"世界末日算法"(Doomsday Algorithm)这类手算方法得出的结果完全相同——这些公式以年、月、日为输入,返回一个 0–6 的数字,对应到具体的星期。

The calculator converts any date into one of seven weekdays.

蔡勒公式(给好奇的你)

$$h = \left( q + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor - 2J \right) \bmod 7$$

其中:

\(q\) = 当月的第几日

\(m\) = 月份(3 = 三月 …… 14 = 上一年的二月;一月和二月要当作上一年的第 13、14 月处理)

\(K\) = 年份 mod 100

\(J = \left\lfloor \text{年份} / 100 \right\rfloor\)

\(h\) = 0(周六)、1(周日)、2(周一)……

Advertisement

Zeller's congruence combines day, month, and year terms, then takes the result modulo 7.

世界末日算法(更适合心算)

这是数学家约翰·康威(John Conway)发明的一种心算星期几的方法。每一年都有一个"末日基准日"(Doomsday)——4/4、6/6、8/8、10/10、12/12 这几天,外加 9/5(部分写法记作 5/9)、7/11、11/7,每年都固定落在同一个星期。只要记住某一年的基准日,就能向前或向后推算到任意日期。

2000 年代的末日基准日 = 周二。因此 2024 年 4 月 4 日是星期四(……等一下,还是用计算器核对一下吧)。

Advertisement

The Doomsday algorithm anchors each year to a known weekday on a seven-point wheel.

历法说明

格里高利历(公历)。1582 年由天主教国家率先采用(当时直接跳过了 10 月 5 日至 14 日,以重新对准季节)。英国及其殖民地直到 1752 年才改用(跳过了 9 月 3 日至 13 日)。本计算器无论日期早晚,一律按格里高利历计算。

闰年。能被 4 整除的年份为闰年,但整百年份(能被 100 整除)必须同时能被 400 整除才算闰年。所以 2000 年是闰年,1900 年则不是。

公元 0 年。在公元纪年(Anno Domini)体系里并不存在——公元前 1 年紧接着就是公元 1 年。本计算器底层使用的 ISO-8601 编号体系中,"0 年"即代表公元前 1 年。

常见用途

查生日:"我出生那天是星期几?"——做知识问答或研究星象的朋友会很感兴趣。

规划纪念日:"2049 年我们的 25 周年纪念日会落在星期几?"

历史研究:把日记记录与事件实际发生的星期对应起来核实。

日程安排:预订之前先确认某个未来日期是不是周末。