2017-08-11 71 views
0

我怎樣才能和我的系統一樣?

create_date = fields.Datetime(default=fields.Datetime.now, string='Creation Date', readonly=True, index=True)

如果我在窗體上顯示它它給了我,例如系統確切時間,如果現在是2017年11月8日15:12:00在表單上我看到相同的,但問題是,當我用它做什麼,它認爲它像2017年11月8日14時12分〇〇秒

例如:

@api.onchange('name') 
 
    def onchange_name(self): 
 
     if self.name: 
 
      raise exceptions.except_orm(_('test'), _(self.create_date))

它顯示2017年8月11日14時12分○○秒

注: 在國內我們是UTC + 1

+0

的時候我的機器上是UTC + 1 – Borealis

+0

odoo的形式將顯示UTC + 1,但如果我想要做一個處理它,它認爲它作爲只是UTC – Borealis

回答

0

Odoo總是存儲在日期時間UTC,並將其轉換到時區的用戶在視圖上(以支持多時區)。您必須將日期時間轉換爲您的時區。你可以,可以嘗試一下:(未測試:))

from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT 
import pytz 

@api.onchange('name') 
def onchange_name(self): 
    if self.name: 
     if self.env.user.tz: 
      user_tz = pytz.timezone(self.env.user.tz) 
      utc_create_date = datetime.strptime(self.create_date, DEFAULT_SERVER_DATETIME_FORMAT) 
      create_date = pytz.utc.localize(utc_create_date, is_dst=None).astimezone(user_tz) 
      raise exceptions.except_orm(_('test'), create_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT)) 
     raise exceptions.except_orm(_('test'), self.create_date) 
+0

感謝您的答案。我測試了它不起作用。 – Borealis

+0

即使我嘗試在如果self.env.user.tz之後引發exceptions.except_orm(_('test'),「second if」)。它不顯示任何東西,它就像沒有進入這種狀態 – Borealis

+0

你是否在Odoo中設置時區? – qvpham