odoo实现UTC时间转换为当地时区时间

2021-03-19  本文已影响0人  飞剑灵隐

场景如下:
在销售中,需要显示发货单的发货时间date_done,
如果在销售单上用datetime类型,那么就不用时区转换了,odoo会给你搞定一切。
但是一个销售单可能对应多个发货单,所以我用的char类型,将发货单的date_done拼成一个字段。
那么问题来了,在销售单上的时间一直比发货单上早八个小时(因为我是东八区)。
翻看官方源码,百度datetime转换时区
解决问题

timezone = self._context.get('tz') or self.env.user.partner_id.tz or 'UTC'
datedone 为datetime类型的对象 从销售订单获得
datedone.replace(tzinfo=pytz.utc).astimezone(pytz.timezone(timezone)).strftime("%Y-%m-%d %H:%M:%S") 
含义就是
先将销售订单获得的时间对象的时区改为utc
然后再用astimezone改为当前时区
最后格式化成字符串
上一篇下一篇

猜你喜欢

热点阅读