
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
[已解决] OpenERP 6.1.1部分版本(6.1) 日期类的数据存在时区问题.
-
@jsohua:官方对这个bug已经有方案 [检测到链接无效,已移除]
-------------------------------------------------------------------------------------
6.1.1 部分版本(现6.1源码已解决本问题) 在日期字段上, 存在时区问题. 表现为
1 缺省时间 为GMT时间, 而非本地时间.
2 修改日期字段后, 字段时间变为GMT时间,而非本地时间.
群里 武汉-lion(343181024) 提出解决方案
1 文件addons\web\static\src\js\dates.js
openerp.web.str_to_datetime 方法 中, 修改<br /> ....<br /> var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');<br /> ....<br />
为<br /> ....<br /> var obj = Date.parseExact(res[1], 'yyyy-MM-dd HH:mm:ss');<br /> ....<br />
2 文件 addons\web\static\src\js\dates.js
openerp.web.datetime_to_str 方法 修改<br /> ....<br /> return zpad(obj.getUTCFullYear(),4) + "-" + zpad(obj.getUTCMonth() + 1,2) + "-"<br /> + zpad(obj.getUTCDate(),2) + " " + zpad(obj.getUTCHours(),2) + ":"<br /> + zpad(obj.getUTCMinutes(),2) + ":" + zpad(obj.getUTCSeconds(),2);<br /> ....<br />
为<br /> ....<br /> return zpad(obj.getFullYear(),4) + "-" + zpad(obj.getMonth() + 1,2) + "-"<br /> + zpad(obj.getDate(),2) + " " + zpad(obj.getHours(),2) + ":"<br /> + zpad(obj.getMinutes(),2) + ":" + zpad(obj.getSeconds(),2);<br /> ....<br />
重启 OE server 后, 清空浏览器缓存后生效.
另: 低于某个版本的 addons\web\ 上述修改也是不生效的.具体哪个版本以后, 需要再确认. 如果你使用今天最新的 addons\web\ 肯定是OK的.
特此感谢 武汉-lion(343181024) 以及 杭州-猴哥(605620619)
大家鼓掌....
==============================
-
非常感谢楼主和武汉-lion,及大家的帮助。
-
新版本代码变化了
<br /> return new Date(<br /> parseInt(res[1], 10),<br /> parseInt(res[2], 10) - 1,<br /> parseInt(res[3], 10),<br /> parseInt(res[4], 10),<br /> parseInt(res[5], 10),<br /> parseInt(res[6], 10)<br /> );<br />
-
@Joshua
这样改的结果是 返回一个 日期串, 变成返回一个 Date 对象了. 确认测试通过了吗?
-
@mrshelly
我测试过了,
现在源码就是这样写的
return new Date(Date.UTC(
parseInt(res[1], 10),
parseInt(res[2], 10) - 1,
parseInt(res[3], 10),
我i只是把其中的UTC去掉,别的修改还是和你的一样,我测试后感觉也没什么问题。
-
@Joshua 能把代码贴全吗?
我看原源代码为<br />....<br />openerp.web.datetime_to_str = function(obj) {<br /> if (!obj) {<br /> return false;<br /> }<br /> return zpad(obj.getUTCFullYear(),4) + "-" + zpad(obj.getUTCMonth() + 1,2) + "-"<br /> + zpad(obj.getUTCDate(),2) + " " + zpad(obj.getUTCHours(),2) + ":"<br /> + zpad(obj.getUTCMinutes(),2) + ":" + zpad(obj.getUTCSeconds(),2);<br />};<br />....<br />
如果按你的 return 改的话, 肯定会报 res undefined 错误的....
你修改的是 str_to_datetime 吧?
不是 datetime_to_str...
-
对 。上面那个是 str_to_datetime,下面是datetime_to_str。分两部分的
-
哦. 可能是我理解错了..
就是使用 new Date 来替代 Date.parseExact 了...
-
官方提供了解决方法:<br / https://bugs.launchpad.net/openobject-server/+bug/1038017 br />补丁如下,大家试试
补丁:
[attachimg=1]
撤销补丁:
[attachimg=2]