场景如下:
在销售中,需要显示发货单的发货时间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改为当前时区
最后格式化成字符串
网友评论