跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. [已解决] OpenERP 6.1.1部分版本(6.1) 日期类的数据存在时区问题.

[已解决] OpenERP 6.1.1部分版本(6.1) 日期类的数据存在时区问题.

已定时 已固定 已锁定 已移动 Odoo 新手求助
10 帖子 3 发布者 7.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • mrshellyM 离线
    mrshellyM 离线
    mrshelly
    写于 最后由 编辑
    #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 />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; var obj = Date.parseExact(res[1] + &quot; UTC&quot;, &#039;yyyy-MM-dd HH:mm:ss zzz&#039;);<br />&nbsp; &nbsp; ....<br />
    


    为

    <br />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; var obj = Date.parseExact(res[1], &#039;yyyy-MM-dd HH:mm:ss&#039;);<br />&nbsp; &nbsp; ....<br />
    




    2 文件 addons\web\static\src\js\dates.js

    openerp.web.datetime_to_str 方法 修改

    <br />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; return zpad(obj.getUTCFullYear(),4) + &quot;-&quot; + zpad(obj.getUTCMonth() + 1,2) + &quot;-&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getUTCDate(),2) + &quot; &quot; + zpad(obj.getUTCHours(),2) + &quot;:&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getUTCMinutes(),2) + &quot;:&quot; + zpad(obj.getUTCSeconds(),2);<br />&nbsp; &nbsp; ....<br />
    


    为


    <br />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; return zpad(obj.getFullYear(),4) + &quot;-&quot; + zpad(obj.getMonth() + 1,2) + &quot;-&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getDate(),2) + &quot; &quot; + zpad(obj.getHours(),2) + &quot;:&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getMinutes(),2) + &quot;:&quot; + zpad(obj.getSeconds(),2);<br />&nbsp; &nbsp; ....<br />
    




    重启 OE server 后, 清空浏览器缓存后生效.

    另: 低于某个版本的 addons\web\ 上述修改也是不生效的.具体哪个版本以后, 需要再确认. 如果你使用今天最新的 addons\web\ 肯定是OK的. 😄


    特此感谢 武汉-lion(343181024)  以及 杭州-猴哥(605620619)
    大家鼓掌....

    ==============================

    1 条回复 最后回复
    0
    • 绿 离线
      绿 离线
      绿叶两片
      写于 最后由 编辑
      #2

      非常感谢楼主和武汉-lion,及大家的帮助。

      1 条回复 最后回复
      0
      • JoshuaJ 离线
        JoshuaJ 离线
        Joshua 管理员
        写于 最后由 编辑
        #3

        新版本代码变化了

        <br />&nbsp; &nbsp; return new Date(<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[1], 10),<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[2], 10) - 1,<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[3], 10),<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[4], 10),<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[5], 10),<br />&nbsp; &nbsp; &nbsp; &nbsp; parseInt(res[6], 10)<br />&nbsp; &nbsp; );<br />
        

        【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

        1 条回复 最后回复
        0
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #4

          @Joshua 
          这样改的结果是 返回一个 日期串, 变成返回一个 Date 对象了. 确认测试通过了吗?

          1 条回复 最后回复
          0
          • JoshuaJ 离线
            JoshuaJ 离线
            Joshua 管理员
            写于 最后由 编辑
            #5

            @mrshelly
            我测试过了,
            现在源码就是这样写的
            return new Date(Date.UTC(       
                    parseInt(res[1], 10),
                    parseInt(res[2], 10) - 1,
                    parseInt(res[3], 10),
            我i只是把其中的UTC去掉,别的修改还是和你的一样,我测试后感觉也没什么问题。

            【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

            1 条回复 最后回复
            0
            • mrshellyM 离线
              mrshellyM 离线
              mrshelly
              写于 最后由 编辑
              #6

              @Joshua 能把代码贴全吗?

              我看原源代码为

              <br />....<br />openerp.web.datetime_to_str = function(obj) {<br />&nbsp; &nbsp; if (!obj) {<br />&nbsp; &nbsp; &nbsp; &nbsp; return false;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return zpad(obj.getUTCFullYear(),4) + &quot;-&quot; + zpad(obj.getUTCMonth() + 1,2) + &quot;-&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getUTCDate(),2) + &quot; &quot; + zpad(obj.getUTCHours(),2) + &quot;:&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp;  + zpad(obj.getUTCMinutes(),2) + &quot;:&quot; + zpad(obj.getUTCSeconds(),2);<br />};<br />....<br />
              



              如果按你的 return 改的话, 肯定会报 res undefined 错误的....

              你修改的是 str_to_datetime 吧?
              不是 datetime_to_str...

              1 条回复 最后回复
              0
              • JoshuaJ 离线
                JoshuaJ 离线
                Joshua 管理员
                写于 最后由 编辑
                #7

                对 。上面那个是 str_to_datetime,下面是datetime_to_str。分两部分的

                【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                1 条回复 最后回复
                0
                • mrshellyM 离线
                  mrshellyM 离线
                  mrshelly
                  写于 最后由 编辑
                  #8

                  哦. 可能是我理解错了..

                  就是使用 new Date 来替代 Date.parseExact 了...

                  1 条回复 最后回复
                  0
                  • JoshuaJ 离线
                    JoshuaJ 离线
                    Joshua 管理员
                    写于 最后由 编辑
                    #9

                    官方提供了解决方法:<br / https://bugs.launchpad.net/openobject-server/+bug/1038017 br />补丁如下,大家试试
                    补丁:
                    [attachimg=1]
                    撤销补丁:
                    [attachimg=2]

                    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                    1 条回复 最后回复
                    0

                    • 登录

                    • 没有帐号? 注册

                    • 登录或注册以进行搜索。
                    • 第一个帖子
                      最后一个帖子
                    0
                    • 版块
                    • 标签
                    • 热门
                    • 用户
                    • 群组