Python datetime返回错误星期几:1678年12月16日计算异常求助
问题解答
这不是datetime模块算错了,是历法差异搞的鬼:
- Python的
datetime默认用格里高利历规则计算所有日期,哪怕是几百年前的,但1678年那会儿欧洲多数地区用的还是儒略历,两种历法的日期计算规则不同,星期结果自然对不上。 - 你提到的截图里显示的星期一,是儒略历下1678年12月16日的星期(对应weekday()返回0);而
datetime.datetime(1678,12,16).weekday()返回4,是按格里高利历回溯计算出来的星期五,这俩结果都是各自历法下的正确值。
如果要准确计算历史儒略历日期的星期,可以用第三方库python-dateutil,示例代码:
from dateutil.calendars import JulianCalendar # 使用儒略历计算指定日期的星期 jc = JulianCalendar() print(jc.weekday(1678, 12, 16)) # 输出0,对应星期一
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

