zoukankan      html  css  js  c++  java
  • openerp7 时区问题

    由于目前openerp 的时区,读取的是UTC 时间,而我国本地时间比UTC 快8小时,这个问题就导致:写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和 前端显示时间的问题

    1、更改openerp日志输出时间,如:
        修改文件:oe_dev/openerp/__init__.py
    os.environ['TZ'] = 'UTC'
        修改成:
    os.environ['TZ'] = 'Asia/Shanghai'

    2、修改数据写入时间差问题
        修改文件:oe_dev/openerp/osv/orm.py
    由于OE的数据库model会默认创建create_date,wirte_date,而更改这两处的只有create和write方法,我们只需要对这两处的方法做下处理,(他们默认取的都是utc时间)
        修改文件行:4219
        修改:
    upd0.append("write_date=(now() at time zone 'Asia/Shanghai')")

    修改文件行:4510
    修改:
    upd1 += ",%s,(now() at time zone 'Asia/Shanghai'),%s,(now() at time zone 'Asia/Shanghai')"

    3、针对时间字段类型(date,datetime...)类型写入数据库时间差问题
        修改文件:oe_dev/openerp/osv/fields.py
    在文件头增加:from datetime import datetime,timedelta
    在4483文件后增加
        if self._columns[field]._type == 'datetime':
        datetime_type = datetime.strptime(vals[field],'%Y-%m-%d %H:%M:%S') + timedelta(hours=8)
        vals[field] = datetime_type.strftime('%Y-%m-%d %H:%M:%S')
    如:
        只是针对datetime,date类型没写(懒得写,反正现在也不用~~~Orz....)
        由于加载datetime和OE的源码加载方式不一样
        OE: import datetime
        修改:from datetime import datetime,timedelta
        需要修改datetime的调用方式,不然会出错,具体错误原因,请猛戳:http://stackoverflow.com/questions/12906402/type-object-datetime-datetime-has-no-attribute-datetime
        修改函数:_store_set_values (大概在4657行)
        修改成:write_date = datetime.fromtimestamp(time.mktime(res_date))  ,少一层调用

    4、前端显示问题,虽然数据库里面存的时间是对的,但是前端显示时也会有时间差问题
        修改文件: oe_dev/openerp/addons/web/static/src/js/dates.js
    修改第24行:
        var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');
    修改成:
        var obj = Date.parseExact(res[1], 'yyyy-MM-dd HH:mm:ss');

  • 相关阅读:
    Firemonkey 控件设定字型属性及颜色
    ListView 使用 LiveBindings 显示超过 200 条记录
    Firemonkey ListView 获取项目右方「>」(Accessory) 事件
    XE7 Update 1 选 iOS 8.1 SDK 发布 iPhone 3GS 实机测试
    Firemonkey Bitmap 设定像素颜色 Pixel
    Firemonkey 移动平台 Form 显示使用 ShowModal 范例
    XE7 提交 App(iOS 8)提示「does not contain the correct beta entitlement」问题修复
    XE7 Android 中使用 MessageDlg 范例
    导出 XE6 预设 Android Style (*.style) 档案
    修正 Memo 設定為 ReadOnly 後, 無法有複製的功能
  • 原文地址:https://www.cnblogs.com/chjw8016/p/3966766.html
Copyright © 2011-2022 走看看