Aeroo 报告错误地处理日期时间字段

Aeroo Reports wrongly handle datetime field

我的 .odt 模板文件包含一个 link 日期时间字段作为模板指令。 虽然 char 指令工作得很好,但这个有一个问题:它在 postgresql(UTC 时区)而不是 UTC+7 中显示时间 "as is"。

我想我可以通过某种方式在我的 .odt 模板文件的指令字段中添加 7 小时,但我不知道如何做。我尝试过

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

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

提前致谢。

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

Time related functions

dec_to_time - converts time to hh:min representation;

time - time access and conversions;

时间模块中有时区设置命令,但我没能使它工作,因为我一开始无法设置时区,在使用 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)。

P.S。当然,如果我们将小时数设置为 <7 将不起作用,但由于它超出了我的可用时间间隔数组 (8-17),它可以作为一个临时决定。