ここでは、ミリ秒単位でエポック時間と時間差を取得するためのC++ 11の方法(まあ、std::literals
はC++ 14ですが、あなたはそれを使用する必要はありません)です:
#include <iostream>
#include <chrono>
using namespace std::literals;
int main()
{
using Clock = std::chrono::system_clock;
auto point1 = Clock::now();
int64_t epoch = point1.time_since_epoch()/1ms;
std::cout << "Time since epoch: " << epoch << std::endl;
auto point2 = Clock::now();
std::cout << "Time difference in milliseconds: " << ((point2 - point1)/1ms) << std::endl;
std::cout << "Time difference in nanoseconds: " << ((point2 - point1)/1ns) << std::endl;
}
system_clock demo
高解像度の時点違いについては
Time since epoch: 1486930917677
Time difference in milliseconds: 0
Time difference in nanoseconds: 102000
標準はchrono::system_clock
よりも高い精度を提供することがありますchrono::high_resolution_clock
を、持っているが、それのエポックは、多くの場合、システムのブート時に起動しません1月1日〜1970年
high_resolution_clock demo
Time since "epoch": 179272927
Time difference in milliseconds: 0
Time difference in nanoseconds: 74980
それは2015+ Visual Studioで100nsの精度を持っている2015年前にhigh_resolution_clock
はまだVisual Studioの上の1秒の精度を持っていることを覚えておいてください、とはは上に少なくとも1msの精度を持っている必要があります他のプラットフォーム。
PS std::chrono
は、32ビットおよび64ビットシステムでまったく同じように動作します。
エポックタイムがミリ秒で必要ですか、2つのタイムポイントの差がミリ秒単位で必要ですか? – rustyx
@RustyXミリ秒で2つの時間点の違いが必要ですが、私は何かが欠けていない限り、私は別の時点でミリ秒でエポック時間を得ることができる仕事をするだろうと仮定します。 – dk13
エポック時間をミリ秒単位で取得する標準的な移植可能な方法はありません。 'chrono :: system_clock'はしばしば1sの精度を持ち、' chrono :: high_resolution_clock'はエポックで開始しません。 – rustyx