将天数添加到日期时间
Adding days to datetime
我不想添加到计划日期整数。它总是从 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
我遇到了这种错误
planned = (line.planned_date + timedelta(days=daysz) ).strftime('%Y-%m-%d')
TypeError: coercing to Unicode: need string or buffer, datetime.timedelta found
line.planned_date
是一个 Unicode 字符串对象。您需要将其转换为日期时间对象,然后使用 timedelta 添加。
例如:
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_date
到datetime对象
from dateutil import parser
planned = (parser.parse(line.planned_date) + timedelta(days=daysz) ).strftime('%Y-%m-%d')
你需要转换 planned_date
因为 Odoo 将日期存储为字符串,最好使用 Date 方法从字符串转换为 Date 对象,你可以参考 Odoo fields.
static from_string(value): Convert an ORM value into a date value.
static to_string(value): Convert a date value into the format expected by the ORM.
def linedate(self):
if line.discount > 5:
daysz = line.product_id.seller_ids[0].delay # it's integer from 1 to 10 always
planned = fields.Date.from_string(line.planned_date) + timedelta(days=daysz)
line.planned_date = fields.Date.to_string(planned)
print line.planned_date
我不想添加到计划日期整数。它总是从 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
我遇到了这种错误
planned = (line.planned_date + timedelta(days=daysz) ).strftime('%Y-%m-%d')
TypeError: coercing to Unicode: need string or buffer, datetime.timedelta found
line.planned_date
是一个 Unicode 字符串对象。您需要将其转换为日期时间对象,然后使用 timedelta 添加。
例如:
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_date
到datetime对象
from dateutil import parser
planned = (parser.parse(line.planned_date) + timedelta(days=daysz) ).strftime('%Y-%m-%d')
你需要转换 planned_date
因为 Odoo 将日期存储为字符串,最好使用 Date 方法从字符串转换为 Date 对象,你可以参考 Odoo fields.
static from_string(value): Convert an ORM value into a date value.
static to_string(value): Convert a date value into the format expected by the ORM.
def linedate(self):
if line.discount > 5:
daysz = line.product_id.seller_ids[0].delay # it's integer from 1 to 10 always
planned = fields.Date.from_string(line.planned_date) + timedelta(days=daysz)
line.planned_date = fields.Date.to_string(planned)
print line.planned_date