Odoo客户服务端所有datetime字段自动加7小时、本地显示正常原因问询
Odoo datetime字段全局累加7小时问题原因与排查方案
Odoo的datetime字段底层统一采用UTC时间写入数据库,前端/业务层展示时会自动根据层级配置的时区做转换,固定出现7小时时差完全是时区配置不匹配导致,常见触发原因和排查顺序如下:
- 服务器操作系统时区配置错误:客户部署环境的服务器系统时区被设为UTC+7,本地环境时区和业务时区匹配,导致时间写入的基准就存在7小时偏差
- Odoo配置时区错误:odoo.conf配置文件中
tz参数被设置为UTC+7对应时区,或系统全局默认时区配置异常,触发全局时间转换偏移 - PostgreSQL数据库时区配置错误:数据库默认时区设为UTC+7,写入数据时自动做了时区转换,导致数据库中存储的原始时间就多了7小时
- 用户侧时区配置错误:所有业务用户的个人账号时区被统一设为UTC+7,展示时统一叠加了7小时偏移
排查操作
- 登录部署服务器执行
timedatectl,核对输出的Time zone参数是否符合业务时区要求 - 检查odoo.conf配置文件,确认
tz参数是否正确,国内业务通常设为Asia/Shanghai即可 - 连接PostgreSQL执行
SHOW timezone;,确认数据库时区配置 - 进入Odoo后台【设置】-【用户管理】,核对相应用户的时区配置是否正确
你提供的字段定义代码没有逻辑问题,fields.Datetime.now默认取UTC时间,符合Odoo标准设计:
date_order = fields.Datetime('Order Date', required=True, states=READONLY_STATES, index=True, copy=False, default=fields.Datetime.now, help="Depicts the date where the Quotation should be validated and converted into a purchase order.")
内容的提问来源于stack exchange,提问作者ny rany
相关产品推荐
相关产品推荐

