算法--给定日期求星期几

问题:给定日期求星期几。

答:利用蔡勒公式(Zeller's congruence)

h = (q + (26 * (m + 1)) // 10 + k + k // 4 + j // 4 + 5 * j) % 7

 

  • q 是月中的某一天(日期)
  • m 是月份(3 表示 3 月,4 表示 4 月,以此类推)
  • k 是年份的最后两位数
  • j 是年份的前两位数

 

 

Python代码示例:

def get_weekday(date_string):
    year, month, day = [int(x) for x in date_string.split('-')]
    if month < 3:
        month += 12
        year -= 1
    K = year % 100   # 年份的后两位
    J = year // 100  # 年份的前两位
    q = day       # 月中的某一天
    m = month      # 月份
    h = (q + 13*(m+1)//5 + K + K//4 + J//4 + 5*J) % 7
    weekday_num = (h + 5) % 7  # 转换成0~6表示星期几
    weekday_name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday' ][weekday_num]
    return weekday_name

if __name__ == '__main__':
    res = get_weekday("2023-06-01")
    print(res)

 

 

参考资料:

维基百科

掘金

博客园

 

 
posted @ 2023-03-27 19:23  o蹲蹲o  阅读(33)  评论(0编辑  收藏  举报