Qt5 Qt项目中的QDateTime使用在夏令时期间导致问题?

Qt5 Qt项目中的QDateTime使用在夏令时期间导致问题?,qt5,qt5.1,Qt5,Qt5.1,我创建了一个项目来读取事件前后的数据 例如: 设D1、D2、D3为QDateTime对象: 设D1为一个值为2014-03-09T2:30:00 设D2为一个值为2014-03-09T1:30:00 设D3为一个值为2014-03-09T3:30:00 D1.date() will return QDate(2014,3,9). D1.time() will return QTime(2,30). D1.toString() will return “”. (D1 > D2) is tru

我创建了一个项目来读取事件前后的数据

例如: 设D1、D2、D3为QDateTime对象:
设D1为一个值为2014-03-09T2:30:00
设D2为一个值为2014-03-09T1:30:00
设D3为一个值为2014-03-09T3:30:00

D1.date() will return QDate(2014,3,9).
D1.time() will return QTime(2,30).
D1.toString() will return “”.
(D1 > D2) is true.
(D1 < D2) is false.
(D1 > D3) is false.
(D1 < D3) is true.
(D1 == D1) is true.
D1.secsTo(X) is always 0.
X.secsTo(D1) is always 0, for all X.
D1.date()将返回QDate(2014,3,9)。
D1.time()将返回QTime(2,30)。
D1.toString()将返回“”。
(D1>D2)为真。
(D1D3)为假。
(D1
在这种情况下,D1.secsTo(X)用于计算从凌晨1:00开始的报告。DST效应发生在凌晨2-3点之间

我需要做什么来纠正这种转换?

声称QDateTime类应该自动处理DST,但这似乎是Qt中的一个错误。我刚刚尝试了您提供的输入,如果其中任何一个时间在凌晨2-3点之间,secsTo()方法都得到了0。如果我将时间改为凌晨3点以后,它提供了一个正确的偏移量

例如:

D1 = 2:30 AM
D2 = 2:45 AM
D1.secsTo(D2) gives 0

D1 = 3:30 AM
D2 = 3:45 AM
D1.secsTo(D2) gives 900
我提交了一份申请

编辑


一旦bug被修复,您当前的解决方案应该可以工作。另一个解决方案是在进行任何计算之前将时间戳转换为UTC。QDateTime类有一个toUTC()方法。我认为这样可以完全避免DST问题。

是的,谢谢。当我尝试从午夜收集数据时,问题就出现了。对于secsTo()而言,凌晨2点到3点的时间始终为零,对于addSecs()、toString(),如果它们与QDateTime对象一起使用,则同样是零。我在太平洋时区(UTC-08:00)测试了此场景。是否有任何建议来纠正此过渡。?