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‘);

时间: 2024-11-05 15:50:56

openerp7 时区问题的相关文章

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/

自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock

oracle、mysql时区设置对timestamp的不同影响

因最近国际去Oracle上MySQL,这就不可避免的涉及到时区和timestamp问题.做一下实验,总结一下. Oracle 首先看下oracle concepts对timestamp的定义: The TIMESTAMP data type is an extension of the DATE data type. It stores fractional seconds in addition to the information stored in the DATE data type.

使用AWS服务时注意时区的问题

最近来到了新的公司,搞起了AWS,会陆续记录一些AWS的东西.今天要讲的就是时区问题,说起来挺简单的,没有服务器跨国的估计注意的人没几个. 我们的EMR机器在US,而实际应用的服务器在CH,同事针对log进行的parser的时候发现实际用户的时间跟我们机器的时间总是有差异,而且排除客户端网络问题差异还挺大. 刚开始没注意,就以为是网络问题,我后来看了看还是. 以下是查找思路: --服务器时间 大部分为04-26 select collector_tstamp :: date,count(*) f

Linux下查看/修改系统时区、时间

一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" 方法 B 仅限于RedHat Linux 和 CentOS 命令 : "timeconfig" 方法 C 适用于Debian 命令 : "dpkg-reconfigure tzdata" 3. 复制相应的时区文件,替换系统时区文件:或者创建链接文件 cp /usr/sh

linux 时区及其时钟同步

# 调整系统时区 cp /usr/share/zoneinfo/Asia/Chongqing /etc/localtime # 手动更新 ntpdate ntp.sjtu.edu.cn 202.120.2.101 # 系统每次启动进行更新echo "ntpdate ntp.sjtu.edu.cn 202.120.2.101" >> /etc/rc.local # 定时更新 */1 * * * * ntpdate ntp.sjtu.edu.cn 202.120.2.101 &

ORACLE10g时区配置错误问题

ORACLE10g打开EM后提示java.lang.Exception: Exception in sending Request::null http://localhost:1158/em 登录em后,提示java.lang.Exception: Exception in sending Request :: null 原因:时区配置错误引起: 修改:(1)打开 E:\oracle\product\10.2.0\db_1\USER-AM_orcl\sysman\config \emd.pro

docker 构建基础镜像 时区问题

前言 在使用tomcat官方docker 镜像时,程序在与微信通信过程中返回了时间差问题,查看后发现是docker 容器的问题. 问题 docker 官方镜像使用的都是UTC 标准时间,这就导致了比beijing时间晚8小时. 解决这一问题并不难,只要修正容器的时区就可以了.众所周知,对容器的修改并不会影响到镜像,所以又会出现这样一个问题,再次从镜像启动容器时,时间就会又变成UTC 标准时间.对于此问题,自然是可以使用docker commit 来解决,但我并不想这样做-- 解决方案 基于cen

Nodejs TimeZone 相关设置(修改时区)

最近遇到了时区设置的问题 在Nodejs中,取当前时间(GMT格式)可以使用Date var GMTDate = new Date();//Sun Mar 06 2016 20:42:44 GMT-0500 (GMT) 但有时候server的时间要求是GreenWich时间,就是零时区 可以这样设置 process.env.TZ = 'Europe/London';//可以切换到任意时区 var date = new Date(); console.log(date);//Mon Mar 07