場景如下:
在銷售中,需要顯示發(fā)貨單的發(fā)貨時間date_done潭苞,
如果在銷售單上用datetime類型忽冻,那么就不用時區(qū)轉換了,odoo會給你搞定一切此疹。
但是一個銷售單可能對應多個發(fā)貨單甚颂,所以我用的char類型蜜猾,將發(fā)貨單的date_done拼成一個字段。
那么問題來了振诬,在銷售單上的時間一直比發(fā)貨單上早八個小時(因為我是東八區(qū))蹭睡。
翻看官方源碼,百度datetime轉換時區(qū)
解決問題
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")
含義就是
先將銷售訂單獲得的時間對象的時區(qū)改為utc
然后再用astimezone改為當前時區(qū)
最后格式化成字符串