正如我在标题中所说,我需要将秒转换为hh:mm:ss
我试过了:
ui->label->setText(QDateTime::fromTime_t(10).toString("hh:mm:ss"));
但是小时的默认值总是01但我需要它为00.结果我应该得到00:00:10但是我得到01:00:10。
答案 0 :(得分:14)
您的时区包含在内,这就是原因。试试这个:
QDateTime::fromTime_t(10).toUTC().toString("hh:mm:ss");
答案 1 :(得分:3)
没有QTime::fromTime_t
;可能你正在使用QDateTime::fromTime_t
,它考虑了时区和夏令时。
相反,您可以使用QTime().addSecs(10).toString(...)
。
答案 2 :(得分:0)
在Qt 5中,您可以使用QTime :: fromMSecsSinceStartOfDay(int msecs)。
ui->label->setText(QTime::fromMSecsSinceStartOfDay(10 * 1000).toString("hh:mm:ss"));
答案 3 :(得分:-1)
当秒数保持在24小时以下时,其他答案非常有效。对于大多数用例来说,这已经足够了。但是,对于我们的用例而言,计时器已超过24小时并重置为00:00:00。请注意,以下代码在100个小时或更长时间内不起作用。 arg方法中的数字2强制字符串为2个字符。
int totalNumberOfSeconds = 90242; // nr of seconds more than 1 day.
int seconds = totalNumberOfSeconds % 60;
int minutes = (totalNumberOfSeconds / 60) % 60;
int hours = (totalNumberOfSeconds / 60 / 60);
QString timeString = QString("%1:%2:%3")
.arg(hours, 2, 10, QChar('0'))
.arg(minutes, 2, 10, QChar('0'))
.arg(seconds, 2, 10, QChar('0'));