如果添加 12 小时(43200 秒),Qt 5.5 QDateTime::addSec 函数在一个月的最后一天返回错误值
Qt 5.5 QDateTime::addSec function has returned a wrong value in a last day of a month if add 12 hours (43200 secs)
Qt 5.5 QDateTime::addSec 如果添加 12 小时(43200 秒),函数在一个月的最后一天返回错误值。
今天 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 的 bug 还是我做错了什么?
注意 QDateTime QDateTime::addSecs(int s) const
是一个常量函数,也就是说,它不会改变 this
对象。您需要评估返回的对象:
QDateTime dt = QDateTime::currentDateTimeUtc().addSecs(43200);
... output dt ...
也来自最新的文档(Qt 4.8 版的文档没有这个):
Note that the time will wrap if it passes midnight.
不管这意味着什么...
我写了一个小例子。一切都按预期进行。我认为这是环境问题。谢谢大家!
Qt 5.5 QDateTime::addSec 如果添加 12 小时(43200 秒),函数在一个月的最后一天返回错误值。
今天 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 的 bug 还是我做错了什么?
注意 QDateTime QDateTime::addSecs(int s) const
是一个常量函数,也就是说,它不会改变 this
对象。您需要评估返回的对象:
QDateTime dt = QDateTime::currentDateTimeUtc().addSecs(43200);
... output dt ...
也来自最新的文档(Qt 4.8 版的文档没有这个):
Note that the time will wrap if it passes midnight.
不管这意味着什么...
我写了一个小例子。一切都按预期进行。我认为这是环境问题。谢谢大家!