openerp7 時區問題

來源:互聯網
上載者:User

標籤:http   io   os   ar   檔案   資料   問題   sp   on   

由於目前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‘);

openerp7 時區問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.