Какой самый простой способ перевести 42010958 миллисекунд в часы: минуты: секунды в Qt?

QTime Класс предлагает мне что-то вроде рассола, поскольку он не позволяет мне устанавливать миллисекунды выше определенных значений, таким образом делая запись, подобную этой, недействительной.

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

Учитывая, что диапазон миллисекунд, с которыми я имею дело, находится между 1000 а также 1000000000Я не очень заинтересован в написании огромного количества целочисленных кодов преобразования для очистки каждой записи, но я сделаю то, что должен.

Какой самый чистый способ конвертировать 42010958 Миллисекунды в Hours:Minutes:Seconds в Qt?

1

Решение

«Чистота» — дело вкуса, но вот как бы я это сделал:

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);
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;
3

Ты можешь использовать 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;
}
1
По вопросам рекламы [email protected]