4

前の質問への回答によると、使用しようとしてsleep_until()いますが、1400:00h などの実際の時間で使用する方法を説明するチュートリアルが見つかりません。

のような例がありますがstd::this_thread::sleep_until(system_clock::now() + seconds(10));、実際に時刻を指定できるものが欲しいです。これはどのような形式にする必要がありますか? 例をいただければ幸いです。

4

3 に答える 3

8

指定された時刻まで待機するには、time_tその時刻を表す を取得し、 を使用std::chrono::system_clock::from_time_tして を作成するstd::chrono::system_clock::time_point必要があります。これを などの xxx_until 関数で使用できますstd::this_thread::sleep_until

例えば

void foo(){
    tm timeout_tm={0};
    // set timeout_tm to 14:00:01 today
    timeout_tm.tm_year = 2013 - 1900;
    timeout_tm.tm_mon = 7 - 1;
    timeout_tm.tm_mday = 10;
    timeout_tm.tm_hour = 14;
    timeout_tm.tm_min = 0;
    timeout_tm.tm_sec = 1;
    timeout_tm.tm_isdst = -1;
    time_t timeout_time_t=mktime(&timeout_tm);
    std::chrono::system_clock::time_point timeout_tp=
        std::chrono::system_clock::from_time_t(timeout_time_t);
    std::this_thread::sleep_until(timeout_tp);
}
于 2013-07-10T09:14:41.550 に答える
0

mktimeを使用して、ここで行われるように sleep_until で使用できる時間指定を構成したい

于 2013-07-10T08:35:39.127 に答える
0

ここを見てください:std::chrono

必要なあらゆる種類の日付/時刻表現形式があります。

于 2013-07-10T08:29:54.067 に答える