1

如果添加 12 小时(43200 秒),Qt 5.5 QDateTime::addSec 函数在一个月的最后一天返回错误的值。

我在 2015 年 11 月 30 日今天得到以下结果:

1.

QDateTime::currentDateTimeUtc().addSecs(43200);

输出(运行时间 - 2015-11-30T10:05:50):

date - Mon Nov 30 10:05:50 2015 GMT

2.

QDateTime::currentDateTimeUtc().addSecs(21600);

输出(运行时间 - 2015-11-30T10:08:12):

date - Mon Nov 30 16:08:12 2015 GMT

3.

QDateTime::currentDateTimeUtc().addDays(1).addSecs(-43200);

输出(运行时间 - 2015-11-30T10:11:08):

date - Tue Dec 1 10:11:08 2015 GMT

我想增加 12 小时并得到 2015-11-30T22:11:08 如何避免这种情况?这是 Qt 中的错误还是我做错了什么?

4

2 回答 2

0

请注意,这QDateTime QDateTime::addSecs(int s) const是一个 const 函数,这意味着它不会更改this对象。您需要评估返回的对象:

QDateTime dt = QDateTime::currentDateTimeUtc().addSecs(43200);
... output dt ...

同样来自最新的文档(4.8 版的 Qt 文档没有这个):

请注意,如果过了午夜,时间将会结束。

不管这意味着什么...

于 2015-11-30T12:32:35.473 回答
0

我写了一个小例子。一切都按预期工作。我认为是环境问题。谢谢大家!

于 2015-12-01T08:58:38.827 回答