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 ...
随机推荐
- Oracle数据库安装图文操作步骤
一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: http://www.o ...
- params可变参数
class Program { // params可变参数 //将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理. //params可变参数必须是形参列表中的最后一个元素. static ...
- Linux 平台MySQL启动关闭方式总结
MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二. 1:使用mysqld启动.关闭MySQL服务 mysql ...
- Linux命令学习总结:rmdir
命令简介: 该命令用用来删除空目录,如果目录非空,则会出现错误.可以使用rm删除目录中的文件后,使用rmdir删除目录.也可以使用rm -rf替代rmdir命令.这是一个非常简单的命令. 命令语法 ...
- Shell: test
基本格式:test expression expression为test命令构造的表达式.这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式返回值 ...
- JQuery.Ajax之错误调试帮助信息
下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...
- C#调用C/C++动态库 封送结构体,结构体数组
一. 结构体的传递 #define JNAAPI extern "C" __declspec(dllexport) // C方式导出函数 typedef struct { int ...
- iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”(转)
症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动的时候,app 首屏一片空白,完全没数据.kill 掉重新打开就好了. 一开始以为是用户网络情况不好,但随着越来越多的用 ...
- 部署私有Docker Registry和使用
环境 vmware虚拟机 Ip:192.168.190.139 Ip:192.168.190.140 Ip:192.168.0.122 registry Docker 1.12.2 Docker 版本 ...
- strcat 函数的实现
原型 extern char *strcat(char *dest,char *src); 用法 #include <string.h> 功能 把 ...