Odoo 中时间相关的一些注意点
odoo数据库中存储默认为UTC标准时间,该时间如果直接用 sql 查出来看是比实际时间小8个小时的,
odoo的后台代码的计算、比较默认都是基于UTC时间,odoo框架在返回客户端时统一根据客户端时区做时区转化处理,如果我们自己写的API接口返回时间数据时则需要我们自行做下转化才是实际时间,代码如下:
def dt_convert(value, return_format='%Y-%m-%d %H:%M:%S'):
"""
UTC时间转为本地时间
"""
if not value:
return value
if isinstance(value, datetime):
value = value.strftime(return_format)
dt = datetime.strptime(value, return_format)
pytz_timezone = pytz.timezone('Etc/GMT-8')
dt = dt.replace(tzinfo=pytz.timezone('UTC'))
return dt.astimezone(pytz_timezone).strftime(return_format)
Odoo 不同版本 对于fields.Datetime 字段的表现有细微的区别,如下: