前の質問への回答によると、使用しようとしてsleep_until()
いますが、1400:00h などの実際の時間で使用する方法を説明するチュートリアルが見つかりません。
のような例がありますがstd::this_thread::sleep_until(system_clock::now() + seconds(10));
、実際に時刻を指定できるものが欲しいです。これはどのような形式にする必要がありますか? 例をいただければ幸いです。
指定された時刻まで待機するには、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);
}
mktimeを使用して、ここで行われるように sleep_until で使用できる時間指定を構成したい
ここを見てください:std::chrono
必要なあらゆる種類の日付/時刻表現形式があります。