好的,这可能是一个非常具体的问题,但是在试图解决这个问题的几周内我都无法找到任何解决方案。
我有一个gitlab CI,用这个docker镜像编译windows可执行文件:https://github.com/mdimura/docker-mingw-qt5(Arch linux mingw-w64 with qt5)
在我的qml文件中有以下代码:
var testTime = new Date
console.info("normal Date: " + testTime.toString())
console.info("Date.getHours: " + testTime.getHours())
console.info("Date.getUTCHours: " + testTime.getUTCHours())
console.info("Date.getTimezoneOffset: " + testTime.getTimezoneOffset())
当我在本地机器上编译并运行它时,我得到了预期的输出,例如:
Info: normal Date: Fr Apr 20 14:55:23 2018 GMT+0200
Info: Date.getHours: 14
Info: Date.getUTCHours: 12
Info: Date.getTimezoneOffset: -120
当我得到mingw编译的可执行文件时,我得到以下输出:
Info: normal Date: Fr Apr 20 14:50:39 2018 GMT+0100
Info: Date.getHours: 13
Info: Date.getUTCHours: 12
Info: Date.getTimezoneOffset: -60
请注意,testTime.toString()
给出的时间在两种情况下都是正确的(时区除外),但时区偏移量和testTime.getHours()
给出的值减去一小时。
当我在Windows中设置时间设置以不使用夏令时时,两个可执行文件都会返回相同的正确值。
要检查这是否真的是qml或javascript的错误,我还添加了
qInfo() << "Qt time hour: " << QTime::currentTime().hour();
到我的main.cpp。这也会在所有情况下打印正确的时间。
我自己甚至在docker中编译了Qt包,仍然是同样的问题。有没有人知道这里发生了什么以及如何解决它?
答案 0 :(得分:1)
如果有人稍后发现此问题,现在会将问题跟踪为issue on my PKGBUILDs repository。
如果@Jay Tea提供更多信息,让我们看看是否可以找到问题的答案。
答案 1 :(得分:0)
在运行exe
之前设置TZ环境变量export TZ=CET-1CEST
./yourExecutable.exe