4

QTime类为我提供了一点泡菜,因为它不允许我将毫秒设置为高于某些值,从而使这样的条目无效。:

    QTime time;
    time.setHMS(0,0,0,42010958); // I normally use a variable

考虑到我正在处理的毫秒范围在大约1000和之间1000000000,我并不是非常热衷于编写大量整数转换代码来清理每个条目,但我会做我必须做的。

在 Qt 中将42010958毫秒转换为最干净的方法是什么?Hours:Minutes:Seconds

4

3 回答 3

6

“最干净”是一个品味问题,但我会这样做:

int milliseconds = 42010958;
int seconds      = milliseconds / 1000;
milliseconds     = milliseconds % 1000;
int minutes      = seconds / 60; 
seconds          = seconds % 60;
int hours        = minutes / 60;
minutes          = minutes % 60;

QTime time;
time.setHMS(hours, minutes, seconds, milliseconds);
于 2016-12-02T22:57:09.720 回答
4

您可以使用QTime::fromMSecsSinceStartOfDay.

#include <QtCore>

int main(int argc, char *argv[])
{
    QTime time = QTime::fromMSecsSinceStartOfDay(42010958);
    qDebug() << time.toString("hh:mm:ss:zzz");
    return EXIT_SUCCESS;
}
于 2016-12-05T07:48:16.300 回答
3

您可以使用 STL。

using namespace std::chrono_literals;
auto milliseconds = 42010958ms;
auto seconds = std::chrono::duration_cast<std::chrono::seconds>(milliseconds);
milliseconds -= seconds;
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(seconds);
seconds -= minutes;
auto hours = std::chrono::duration_cast<std::chrono::hours>(minutes);
minutes -= hours;
于 2016-12-03T01:31:17.630 回答