Python 向datetime添加天数
我不想添加到计划日期整数。它总是从1到10,但是我的代码有问题Python 向datetime添加天数,python,odoo-8,odoo,odoo-9,Python,Odoo 8,Odoo,Odoo 9,我不想添加到计划日期整数。它总是从1到10,但是我的代码有问题 planned_date = fields.Date(string='Planned Date', required=False, default=fields.Date.today) def linedate(self): if line.discount > 5: daysz = line.product_id.selle
planned_date = fields.Date(string='Planned Date', required=False,
default=fields.Date.today)
def linedate(self):
if line.discount > 5:
daysz = line.product_id.seller_ids[0].delay # it's integer from 1 to 10 always
planned = (line.planned_date + timedelta(days=daysz) ).strftime('%Y-%m-%d')
line.planned_date = planned
print line.planned_date
我犯了这样的错误
计划=(line.planned_date+timedelta(days=daysz)).strftime(“%Y-%m-%d”)
TypeError:强制使用Unicode:需要字符串或缓冲区,找到datetime.timedelta
line.planned\u date
是一个Unicode字符串对象。您需要将其转换为datetime对象,然后使用timedelta添加
Ex:
import datetime
planned = (datetime.datetime.strptime(line.planned_date, '%Y-%m-%d') + datetime.timedelta(days=daysz) ).strftime('%Y-%m-%d')
line.planned\u date
是一个Unicode字符串对象。您需要将其转换为datetime对象,然后使用timedelta添加
Ex:
import datetime
planned = (datetime.datetime.strptime(line.planned_date, '%Y-%m-%d') + datetime.timedelta(days=daysz) ).strftime('%Y-%m-%d')
安装
dateutil
(pip-Install-python-dateutil
),然后您可以轻松地将line.planned\u-date
解析为datetime对象
from dateutil import parser
planned = (parser.parse(line.planned_date) + timedelta(days=daysz) ).strftime('%Y-%m-%d')
安装
dateutil
(pip-Install-python-dateutil
),然后您可以轻松地将line.planned\u-date
解析为datetime对象
from dateutil import parser
planned = (parser.parse(line.planned_date) + timedelta(days=daysz) ).strftime('%Y-%m-%d')
您需要转换
计划日期
,因为Odoo将日期存储为字符串,因此最好使用日期方法从字符串和日期对象转换,您可以参考
静态from_字符串(值):将ORM值转换为日期值
static to_string(value):将日期值转换为ORM期望的格式
您需要转换
计划日期
,因为Odoo将日期存储为字符串,因此最好使用日期方法从字符串和日期对象转换,您可以参考
静态from_字符串(值):将ORM值转换为日期值
static to_string(value):将日期值转换为ORM期望的格式
看起来像是
line.planned\u date
是一个字符串。你能显示它的打印吗?我刚刚选中了类型。是的,你需要将它转换为datetime对象,然后添加所需的timedelta。看起来像line。planned\u date
是一个字符串。你能显示它的打印版本吗?我刚刚检查了类型是的,你需要将它转换为datetime对象,然后添加所需的timedelta。抱歉,无法使用外部库如果你不能安装dateutil
,请使用@rakesh建议的方法;但请确保以%Y-%m-%d
格式指定了行.计划的\u日期
。如果不调整格式,但无法使用外部库如果无法安装dateutil
,请使用@rakesh建议的方法;但请确保以%Y-%m-%d
格式指定了行.计划的\u日期
。如果不调整格式,我建议使用Odoo的内部转换fields.Date.from_string()
,因为您不需要随意处理格式。当然,对于fields.Date.to_string()
,情况正好相反。我建议使用Odoo的内部转换fields.Date.from_string()
,因为您不需要处理格式。当然,另一种方法是使用fields.Date.to_string()
。在Odoo上下文中,答案更好。在Odoo上下文中,答案更好。