2012-02-01 28 views
40

C++ 11のドキュメントが不十分であることに起因する小さな問題があります。C++クロノシステムの時間(単位:ミリ秒、時間)

エポックからの経過時間をミリ秒単位またはナノ秒単位または秒単位で取得したい場合は、この値を別の解像度に「キャスト」する必要があります。 私はgettimeofday()を使用してそれを行うことはできますが、それは簡単なので、std :: chronoを使って達成しようとしました。

std::chrono::time_point<std::chrono::system_clock> now = 
    std::chrono::system_clock::now(); 

しかし、私はこのようにtime_pointにして得られたの解像度が何であるか見当がつかない、と私は、単純な符号なしlong longとしてこの時間を取得する方法がわからない、と私:

は、私が試しましたそれを別の決議にどのように投じるかという構想はありません。

+0

[STD ::クロノとCOUT]の可能複製(http://stackoverflow.com/questions/7889136/stdchrono-and-cout) –

答えて

77

now.time_since_epoch()を実行すると、エポック以降の時間を表す時間がthe clock's resolutionになります。ミリ秒duration_castを使用するように変換するには:

auto duration = now.time_since_epoch(); 
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count(); 
+11

+1。詳細はこちら(これはほぼチュートリアルです):http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm –

+0

@Howardありがとう!今私は、彼らが「」をアンダーにしないと言ったときに、人々を指す場所をいくつか持っています。 –

+0

@ R.MartinhoFernandes私はまた、クロノライブラリ[ここ](http://stackoverflow.com/questions/31575061/how-to-convert-stdchronotime-point-to-uint64-t)に関連する基本的な質問があります。あなたが私を助けてくれるかどうか見てください。どんな助けでも大歓迎です。 – user1950349

関連する問題