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上运行的
该程序的导入库也在上面提到。
先谢谢了。完整的代码就在这里。
答案 0 :(得分:2)
您不必将date
转换为str
:
在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
答案 1 :(得分:2)
import datetime
from datetime import datetime, timedelta
date_format = "%Y-%m-%d"
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-03-24","2019-03-25"))
这在python3中工作正常。您无需将d1和d2转换为字符串即可查找日期。
答案 2 :(得分:1)
让我在Odoo上下文中回答。使用this commit后,您的旧代码将无法使用。因为在此之前,您已经获得了字符串作为Odoo中Date
和Datetime
字段的值。在此提交之后,您将获得python datetime.date
的响应。改为datetime.datetime
个对象。
因此,只需使用这些对象即可,如果不需要,请勿解析为字符串。