[已解决] 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)
大家鼓掌....
============================== -
新版本代码变化了
<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 能把代码贴全吗?
我看原源代码为<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...