我怎样才能和我的系统一样?
问题描述:
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
答
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)
的时候我的机器上是UTC + 1 – Borealis
odoo的形式将显示UTC + 1,但如果我想要做一个处理它,它认为它作为只是UTC – Borealis