【问题标题】:Aeroo Reports wrongly handle datetime fieldAeroo 报告错误地处理日期时间字段
【发布时间】:2017-07-27 07:21:40
【问题描述】:

我的 .odt 模板文件包含一个指向日期时间字段的链接作为模板指令。 虽然 char 指令可以完美运行,但这个指令有一个问题:它在 postgresql(UTC 时区)而不是 UTC+7 中“按原样”显示时间。

我想我可以以某种方式在我的 .odt 模板文件的指令字段中添加 7 小时,但我不知道怎么做。我试过类似的东西

(o.visitdt) + relativedelta(hours=7)

visitdt 是我的日期时间字段,但它当然会出错。 那么,什么是正确的语法呢?还是我应该做其他事情来使该字段正确显示?

提前致谢。

【问题讨论】:

    标签: postgresql openerp odoo-8 aeroolib


    【解决方案1】:

    我花了一天时间,试图找出那个问题的关键,而且,正如我发现的那样,它可以通过模板指令来完成。正如 aeroo 报告 wiki 上所说, 唯一与时间相关的功能(它能够理解)是

    时间相关函数

    dec_to_time - 将时间转换为 hh:min 表示;

    时间 - 时间访问和转换;

    时间模块中有设置时区的命令,但我无法让它工作,因为我一开始无法设置时区,在接受 tzset() 的更改之前,指令拒绝理解它。 也许只有我一个人,但我决定另辟蹊径。

    来了。可能这不是最好的决定,但它确实有效,所以我会使用这个方案,直到找到更好的方案。

    我将日期时间字段分为三个部分:

    time.strftime("%d.%m.%Y", time.strptime(str(o.visitdt), "%Y-%m-%d %H:%M:%S"))
    

    是我的日期,在这里,

    (time.strptime(str(o.visitdt), "%Y-%m-%d %H:%M:%S"))[3]+07
    

    这是 小时 部分,我从时间元组中拉出它并增加了 7(我的时区),

    time.strftime("%M", time.strptime(str(o.visitdt), "%Y-%m-%d %H:%M:%S"))
    

    最后一部分 - 分钟(不受影响)。

    结果,我们得到了我们想要的确切日期和时间(例如 19.10.2017 11:00)。

    附:当然,如果我们将小时数设置为

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多