Zeller's Congruence - 在Python中查找日期的星期几

2025年3月7日 | 阅读 3 分钟

蔡勒公式简介

一种称为蔡勒公式的技术可用于确定任何儒略历或格里高利历日期的星期几。此公式使用基于年、月、日的整数计算来计算给定日期是星期几。

克里斯蒂安·蔡勒 (Christian Zeller) 开发了一种称为蔡勒同余的方法,该方法可以确定儒略历或格里高利历中任何日期的星期几。有人可能会争辩说,它是基于将日历日期转换为儒略日。

可以使用算法找出每个给定日期的星期几。

对于格里高利历,它是这样的

Zeller's Congruence - Find the Day for a Date in Python

就儒略历而言,它是

Zeller's Congruence - Find the Day for a Date in Python

其中

  • 星期几用 h 表示(0 = 星期六,1 = 星期日,2 = 星期一,...,6 = 星期五)。
  • 月份的第几天是 q。
  • m 表示月份(3 = 三月,4 = 四月,5 = 五月,...,14 = 二月)。
  • 年份 K 是世纪年(年份 % 100)。
  • J 是从零开始的世纪(实际上是 year/100?)。为了将它们与标准的序数世纪计数区分开来,例如,1995 年和 2000 年的零基世纪分别是 19 和 20。

注意:在此过程中,一月和二月被视为前一年的第 13 个月和第 14 个月。例如,2010 年 2 月 2 日,该算法将该日期计算为 2009 年第 14 个月的第二天(DD/MM/YYYY 格式为 02/14/2009)。
对于 ISO 周日期,星期几 d(1 = 星期一至 7 = 星期日)为 d = ((h + 5) % 7) + 1

Python 中蔡勒公式的实现

现在我们将通过一些示例来演示在 Python 中实现蔡勒公式。

示例 1

输出

 
Sunday

说明

Python 应用程序使用蔡勒公式来确定给定日期的星期几,并修改一月和二月的月份和年份。get_day_name 函数根据索引创建星期几的名称,然后打印出来。

  • 时间复杂度: O(1)
  • 辅助空间: O(1)

蔡勒公式的另一种变体

Zeller's Congruence - Find the Day for a Date in Python

示例 2

输出

 
Friday

说明

该应用程序使用末日算法计算任何日期的星期几;该日期映射到该月的末日。星期几的名称(“星期日”到“星期六”)会附加到结果中。

结论

蔡勒公式是一种高效准确的工具,它利用整数运算来计算儒略历和格里高利历中任何日期的星期几。