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');
openerp7 时区问题的更多相关文章
- openerp7 时区问题解决--改成本地时区
由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...
- ISO日期格式标准,浏览器到服务器到mysql中的时区
时区简单理解 https://zh.wikipedia.org/wiki/%E6%97%B6%E5%8C%BA 上面的链接是时区的wiki说明,下面说说我记住的部分: GMT时区是格林威治标准时间,我 ...
- ubuntu设置时区为美国中部时间西六区
查看当前ubuntu系统时区 date -R Fri, Dec :: + 显示的是东八区时间及北京时间 然后输入tzselect 按照提示修改对应时区 本例子修改为美国中部时间 西六区 ~$ tzse ...
- JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决
JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...
- 在 Linux 中查看时区
1.date date +"%Z %z" 或者 date -R 2.timedatectl timedatectl|grep "Timezone" 可以使用 t ...
- 关于elasticsearch和kibana的时区和日期问题
elasticsearch原生支持date类型,json格式通过字符来表示date类型.所以在用json提交日期至elasticsearch的时候,es会隐式转换,把es认为是date类型的字符串直接 ...
- 3种方法修改PHP时区
PHP5.2.4之前的版本无需设置时区.下面是修改PHP时区的三个办法. 1.修改PHP.ini这个文件 找到date.timezone这行,去掉前面的分号,改成: date.timezone = A ...
- REDHAT一总复习1 NTP更改时区,并验证时区设置是否正确
把计算机时区调整到巴哈马(这是个啥地方?听都没听过.) 使用 tzselect 进行确定时区,并进行可对话性的设置,按照对应的序号,射进去就行了. 使用:timedatectl set-timezo ...
- 修改linux的系统时间和时区
时间: date命令将日期设置为2016年12月16日 ---- date -s 12/16/16 将时间设置为9点28分50秒 ---- date -s 09:28:50 时区: tzsel ...
随机推荐
- JavaWeb开发环境准备之Linux篇
01 Linux环境准备 (本文在win10上使用 VMware12 + Ubuntu14.04) 1.JDK安装及相关配置 参考:http://blog.csdn.net/sxdtzhaoxin ...
- Windows 10 安装双系统 CentOS 7
系统环境:Windows 10 && CentOS 7 准备工具: ●CentOS7 官网下载地址:https://wiki.centos.org/Download (注意: i386 ...
- 2015.2.16 关于delphi web控件打开新网页时弹出关闭页面(js代码)出错的解决办法研究
参考网址1:http://www.csharpwin.com/csharpspace/2360.shtml...参考网址2:http://www.oschina.net/question/234345 ...
- python高级之多线程
python高级之多线程 本节内容 线程与进程定义及区别 python全局解释器锁 线程的定义及使用 互斥锁 线程死锁和递归锁 条件变量同步(Condition) 同步条件(Event) 信号量 队列 ...
- Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
Dialog详解(包括进度条.PopupWindow.自定义view.自定义样式的对话框) Android中提供了多种对话框,在实际应用中我们可能会需要修改这些已有的对话框.本实例就是从实际出发, ...
- angular监听
监听中第三个参数,何时使用true? true的意思是“深度监听” 1.当监听对象属性变化时,而你监听的对象写得是对象,此时要用深度监听true: 2....... 监听耗资源,用完关闭 var wa ...
- JavaScript数组:增删改查、排序等
直接上代码 // 数组应用 var peoples = ["Jack","Tom","William","Tod",&q ...
- 常用Git代码托管服务分享
Git Repository代码托管服务越来越流行,目前有很多商业公司和个人团队逐渐切换项目到 Git平台进行代码托管.本文分享一些常用的Git代码托管服务,其中一些提供私有项目保护服务,特别有利于远 ...
- Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 ? 1 2 String a = String.valueOf(2); //integer to numer ...
- C#进阶系列——DDD领域驱动设计初探(七):Web层的搭建
前言:好久没更新博客了,每天被该死的业务缠身,今天正好一个模块完成了,继续来完善我们的代码.之前的六篇完成了领域层.应用层.以及基础结构层的部分代码,这篇打算搭建下UI层的代码. DDD领域驱动设计初 ...