问题:给定日期求星期几。
答:利用蔡勒公式(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)
参考资料:
标签:__,name,--,month,算法,weekday,year,给定日期 From: https://www.cnblogs.com/liqi175/p/17262586.html