首页 > 解决方案 > 日期时间不能低于 1000 年

问题描述

例如 print(days_diff((1000, 1, 1), (9999, 12, 31))) - 工作正常,但 print(days_diff((100, 1, 1), (9999, 12, 31))) -说 - “时间数据 '(100, 1, 1)' 与格式 '(%Y, %m, %d)' 不匹配”。如何解决?

from datetime import datetime as dt

def days_diff(d1, d2):

    d1 = dt.strptime(str(d1), "(%Y, %m, %d)")
    d2 = dt.strptime(str(d2), "(%Y, %m, %d)")

    return abs((d2 - d1).days)

标签: pythondatetime

解决方案


您正在做的是将元组转换为 str,然后将其解析为日期时间。但是您也可以将(year, month, day)元组直接传递给 datetime 构造函数:

from datetime import datetime as dt

def days_diff(d1, d2):

    d1 = dt(*d1)
    d2 = dt(*d2)

    return abs((d2 - d1).days)

# result: 3615899
print( days_diff((100,1,1), (9999,12,31)) )```

推荐阅读