create_date = fields.Datetime(default=fields.Datetime.now, string='Creation Date', readonly=True, index=True)
如果我在表格上显示它,它给我系统精确的小时,例如,如果它现在是11/08/2017 15:12:00在表格上我看到相同,但问题是我什么时候用它做,它认为就像11/08/2017 14:12:00
例如:
@api.onchange('name')
def onchange_name(self):
if self.name:
raise exceptions.except_orm(_('test'), _(self.create_date))
显示2017-08-11 14:12:00
NB: 在国家,我们是UTC + 1
答案 0 :(得分: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)