Ubuntu Linux 16.04およびg ++を使用して、Unix EpochまたはWindows Epochと任意の日付/時刻の間のナノ秒数を計算するときにマイクロ秒またはミリ秒の粒度を取得できるかどうか疑問に思います。 time(NULL) の time_t 結果には秒単位があるのに対して、 gettimeofday の構造体 timeval 結果にはミリ秒単位があることがわかります。
この問題を解決する他の方法は何ですか?これはプログラミングの質問ではありません。私はこれをテストするためのプログラムを書いており、必要に応じて共有できます。
どんな助けでも大変感謝します。
ベストアンサー1
を使用してこれを行うことができますgettimeofday()
。これはStackOverflowへの回答、ここに引用します。
マイクロ秒タイムスタンプを取得するには2つのオプションがあります。最初の(そして最良の)オプションはタイプを直接使用することです
timeval
。struct timeval GetTimeStamp() { struct timeval tv; gettimeofday(&tv,NULL); return tv; }
2番目に私にとって理想的ではないオプションは、uint64_tからuint64_tを構築することです
timeval
。uint64_t GetTimeStamp() { struct timeval tv; gettimeofday(&tv,NULL); return tv.tv_sec*(uint64_t)1000000+tv.tv_usec; }