好吧,这可能是一个非常具体的问题,但我断断续续地试图解决这个问题的几周时间里,我无法找到任何解决方案。
我有一个gitlab配置项,它用这个docker镜像编译windows可执行文件:https://github.com/mdimura/docker-mingw-qt5 (带qt5的Arch linux mingw-w64 )
在我的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包,仍然存在同样的问题。有没有人知道这是怎么回事,我该怎么解决它?
发布于 2018-05-06 07:19:16
以防有人后来发现了这个问题-问题现在被跟踪为issue on my PKGBUILDs repository。
让我们看看,如果@Jay Tea提供了更多信息,我是否能找到问题的答案。
发布于 2018-04-24 11:11:59
在运行exe之前设置TZ环境变量
export TZ=CET-1CEST
./yourExecutable.exehttps://stackoverflow.com/questions/49942374
复制相似问题