4

QTimeクラスは、特定の値を超えるミリ秒を設定することを許可していないため、次のようなエントリを無効にするという点で、少し面倒です。

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

私が扱っているミリ秒の範囲が約 から の間であることを考えると、10001000000000エントリをサニタイズするために膨大な量の整数変換コードを書くことにあまり熱心ではありませんが、やらなければならないことはします。

42010958ミリ秒をHours:Minutes:SecondsQtに変換する最もクリーンな方法は何ですか?

4

3 に答える 3

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 に答える