首页 > 解决方案 > 为什么使用 strptime 时会出现此 datetime 日期错误

问题描述

TypeError: strptime() argument 1 must be str, not datetime.date

运行以下代码时出现上述错误。你对此有什么想法吗?

import datetime
from datetime import datetime, timedelta
import babel
import time


date_format = "%Y-%m-%d"
class HrPayslipEmployees(models.TransientModel):
    _inherit = 'hr.payslip.employees'

@api.one
    def compute_date_diff(self, ds, dt):
        from datetime import datetime
        d1 = datetime.strptime(ds, "%Y-%m-%d")
        d1 = str(d1)
        d2 = datetime.strptime(dt, "%Y-%m-%d")
        d2 = str(d2)
        days = (d2 - d1).days + 1
        if days < 0:
            days = 0
        return days

但是相同的代码在 Pythin 2.7 中完美运行,但上面的代码是我在 Python 3.x 上运行的

上面还提到了程序的导入库。

提前致谢。完整的代码就在上面。

标签: pythonpython-3.xpython-2.7odooodoo-12

解决方案


您不必将其转换datestr

在 Python 3.x 中

from datetime import datetime

def compute_date_diff(ds, dt):
    d1 = datetime.strptime(ds, "%Y-%m-%d")
    d2 = datetime.strptime(dt, "%Y-%m-%d")
    days = (d2 - d1).days + 1
    if days < 0:
        days = 0
    return days

print(compute_date_diff('2019-01-01', '2019-02-01'))

输出

32

推荐阅读