所以让我说我有这个简单的主要方法:
int main()
{
int altitude = 10;//in feet
int altitude_rate = 3; //in feet/sec
int new_altitude;
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
new_altitude = altitude + (altitude_rate * 5(seconds));
//I want to take the time I asked it to wait(5 sec in this case) and use it to
//calculate my new altitude.
std::cout << "New Altitude: " << new_altitude << std::endl;
return 0;
}
是否有一项功能可以让我抽出时间并像int
一样使用它?
答案 0 :(得分:1)
deadline_timer
在内部使用到期时间,因此会将您想要的延迟(5秒)添加到施工时的当前时间。 expires_from_now()
将返回到期前的剩余时间(如果已经触发,则可以为负)。因此,你无法收回你最初给出的延迟。
您可以记住构建计时器的时间,并使用expires_at()
来计算初始延迟,或者您可以将延迟保留在某处并使用它。
答案 1 :(得分:1)
您是否可以使用时差来计算时间差
boost::posix_time::ptime tick = boost::posix_time::microsec_clock::local_time();
// here's the deadline_timer waiting
boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
boost::posix_time::time_duration diff = now-tick;
int sec = diff.total_seconds();