boost::posix_time::time_duration
を使用すると、時間範囲を取得できます。例:
boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();
さらに高解像度を得るには、使用している時計を変更することができます。たとえば、boost::posix_time::microsec_clock
にすると、これはOSに依存する可能性があります。たとえば、Windowsの場合、boost::posix_time::microsecond_clock
にはマイクロ秒ではなく、ミリ秒の解像度があります。
ハードウェアに少し依存する例です。
int main(int argc, char* argv[])
{
boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time();
boost::posix_time::time_duration diff = t2 - t1;
std::cout << diff.total_milliseconds() << std::endl;
boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time();
boost::posix_time::time_duration msdiff = mst2 - mst1;
std::cout << msdiff.total_milliseconds() << std::endl;
return 0;
}
私のwin7マシンです。最初の出力は0または1000です。2番目の解像度。 2番目のクロックは、クロックの分解能が高いため、ほぼ常に500です。少し助けてくれることを願っています。
あなたはエポックタイムスタンプを意味するのですか? – Nim
"しかし、私は現在のミリ秒の長い値を持つ必要がある後。 ....何? –