我遇到以下代码的问题:
QDateTime test2;
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");
这将输出“01:00:25”而不是00:00:25。 为什么第一个小时设置为01而不是00?
我认为可能是am / pm表示法,所以我尝试了这个
QDateTime test2;
test2.setTime_t(3600*22+25);
qDebug() << test2.toString("hh:mm:ss");
我仍然收到了输出
“二十三时00分25秒”
帮助:)
答案 0 :(得分:6)
这是因为您没有将QDateTime设置为UTC。那么,1970年1月1日00:00:25在UTC时间可能是你当地时区的01:00:25?你的代码对我说“10:00:25”,UTC + 10:)
试试这个:
QDateTime test2;
test2.setTimeSpec(Qt::UTC);
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");
答案 1 :(得分:2)
只是补充一下,似乎UTC正在弄乱你。检查输出的最后一行:
#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv );
QDateTime test1;
test1.setTime_t(25);
qDebug() << "Local 1: " << test1.toString("hh:mm:ss");
qDebug() << "Local 1: " << test1.toString();
qDebug() << "UTC 1: " << test1.toUTC().toString();
QDateTime test2;
test2.setDate(QDate(1970,01,01));
test2.setTime(QTime(00,59));
qDebug() << "Local 2: " << test2.toString("hh:mm:ss");
qDebug() << "Local 2: " << test2.toString();
qDebug() << "UTC 2: " << test2.toUTC().toString();
return 0;
}
输出:
Local 1: "01:00:25"
Local 1: "Thu Jan 1 01:00:25 1970"
UTC 1: "Thu Jan 1 00:00:25 1970"
Local 2: "00:59:00"
Local 2: "Thu Jan 1 00:59:00 1970"
UTC 2: "Wed Dec 31 23:59:00 1969"
PS:我在UTC + 1