Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向datetime添加天数_Python_Odoo 8_Odoo_Odoo 9 - Fatal编程技术网

Python 向datetime添加天数

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

我不想添加到计划日期整数。它总是从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.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上下文中,答案更好。