美文网首页
odoo实现UTC时间转换为当地时区时间

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

作者: 飞剑灵隐 | 来源:发表于2021-03-19 14:32 被阅读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改为当前时区
    最后格式化成字符串

    相关文章

      网友评论

          本文标题:odoo实现UTC时间转换为当地时区时间

          本文链接:https://www.haomeiwen.com/subject/qtivcltx.html