簡體   English   中英

將42010958毫秒轉換為Hours:Minutes:Seconds in Qt的最干凈方法是什么?

[英]What is the cleanest way to translate 42010958 Milliseconds to Hours:Minutes:Seconds in Qt?

QTime類為我提供了一些泡菜,因為它不允許我將毫秒設置為高於某些值,從而使這樣的輸入無效。

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

考慮到我要處理的毫秒范圍大約在10001000000000之間,我並不是非常熱衷於編寫大量的整數轉換代碼來清理每個條目,但是我會做我必須做的。

42010958毫秒轉換為Hours:Minutes:Seconds in Qt的最干凈方法是什么?

“最干凈”是一個品味問題,但是我將按照以下方式進行操作:

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

您可以使用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;

您可以使用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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM