首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用mingw-w64编译的windows exe中的qml中未应用夏令时

用mingw-w64编译的windows exe中的qml中未应用夏令时
EN

Stack Overflow用户
提问于 2018-04-20 21:06:41
回答 2查看 129关注 0票数 1

好吧,这可能是一个非常具体的问题,但我断断续续地试图解决这个问题的几周时间里,我无法找到任何解决方案。

我有一个gitlab配置项,它用这个docker镜像编译windows可执行文件:https://github.com/mdimura/docker-mingw-qt5 (带qt5的Arch linux mingw-w64 )

在我的qml文件中有以下代码:

代码语言:javascript
运行
复制
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())

当我在我的本地机器上编译并运行它时,我得到了预期的输出,例如:

代码语言:javascript
运行
复制
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编译的可执行文件时,我得到以下输出:

代码语言:javascript
运行
复制
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的错误,我还添加了

代码语言:javascript
运行
复制
qInfo() << "Qt time hour: " << QTime::currentTime().hour();

到我的main.cpp。这也会在所有情况下打印出正确的时间。

我甚至自己在docker中编译了Qt包,仍然存在同样的问题。有没有人知道这是怎么回事,我该怎么解决它?

EN

回答 2

Stack Overflow用户

发布于 2018-05-06 07:19:16

以防有人后来发现了这个问题-问题现在被跟踪为issue on my PKGBUILDs repository

让我们看看,如果@Jay Tea提供了更多信息,我是否能找到问题的答案。

票数 1
EN

Stack Overflow用户

发布于 2018-04-24 11:11:59

在运行exe之前设置TZ环境变量

代码语言:javascript
运行
复制
export TZ=CET-1CEST

./yourExecutable.exe
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49942374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档