web-dev-qa-db-ja.com

chrono :: durationからunsigned intミリ秒を取得します

Winapiラッパーの場合、呼び出しに指定された期間、クロノを使用します。コード例:

bool setTimer(std::chrono::duration<std::chrono::milliseconds> duration)
{
    unsigned int dwDuration = Do some chrono magic here

    SetTimer(m_hWnd,1,dwDuration,0);
}

dwDurationはミリ秒単位である必要があります。

最初の質問:魔法をどうするか。

2番目の質問:パラメーター宣言は大丈夫ですか?

13
Martin Schlott

型の名前は_std::chrono::milliseconds_で、ミリ秒数を返すメンバー関数count()があります。

_bool setTimer(std::chrono::milliseconds duration)
{
    unsigned int dwDuration = duration.count();
    return std::cout << "dwDuration = " << dwDuration << '\n';
}
_

オンラインデモ: http://coliru.stacked-crooked.com/a/03f29d41e9bd260c

超徹底的になりたい場合、count()の戻り値の型は_std::chrono::milliseconds::rep_です。

小数ミリ秒を処理する場合、型は_std::chrono::duration<double, std::milli>_になります(count()の戻り型はdoubleになります)。

22
Cubbi

次のコードを使用できます。

auto now = chrono::high_resolution_clock::now();

auto timeMillis = chrono::duration_cast<chrono::milliseconds>(now.time_since_Epoch()).count();
2
Ivan Mushketyk