4

根据对我之前问题的回答,我正在尝试使用sleep_until()但找不到一个教程来告诉我如何在实际时间(例如 1400:00h)中使用它。

有这样的例子:std::this_thread::sleep_until(system_clock::now() + seconds(10));,但我想要一些实际上可以让我指定时钟时间的东西。这应该是什么格式?我会很感激任何例子。

4

3 回答 3

8

要等到指定的时钟时间,您需要获取time_t表示该时钟时间的 a,然后使用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

看看这里:std::chrono

您需要各种日期/时间表示格式。

于 2013-07-10T08:29:54.067 回答
0

您想使用mktime来组成一个时间规范,您可以在 sleep_until 中使用,如此

于 2013-07-10T08:35:39.127 回答