我怎么能和我的系统一样?

时间:2017-08-11 14:21:26

标签: openerp odoo-10

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

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)