System.currentTimeMillis()
Cにおける Java の等価物は何ですか?
5 に答える
Check time.h
、おそらくgettimeofday()
関数のようなもの。
次のようなことができます
struct timeval now;
gettimeofday(&now, NULL);
now.tv_sec
次に、とから値を取得して時間を抽出できますnow.tv_usec
。
Linux やその他の Unix 系システムでは、clock_gettime(CLOCK_MONOTONIC)を使用する必要があります。これが利用できない場合 (Linux 2.4 など)、gettimeofday()にフォールバックできます。後者には、クロック調整の影響を受けるという欠点があります。
Windows では、 QueryPerformanceCounter()を使用できます。
私のこのコードは、上記のすべてを単純なインターフェイスに抽象化し、ミリ秒数を int64_t として返します。返されるミリ秒の値は、相対的な使用 (タイムアウトなど) のみを目的としており、特定の時間に関連していないことに注意してください。
time()関数がありますが、ミリ秒ではなく秒を返します。より高い精度が必要な場合は、Windows のGetSystemTimeAsFileTime()や *nix のgettimeofday()などのプラットフォーム固有の関数を使用できます。
実際には日付と時刻は気にせず、次のように 2 つのイベント間の間隔を計りたいだけの場合:
long time1 = System.currentTimeMillis();
// ... do something that takes a while ...
long time2 = System.currentTimeMillis();
long elapsedMS = time2 - time1;
C に相当するものはclock()です。Windows では、この目的でGetTickCount()を使用する方が一般的です。
このスレッドを参照してください: http://cboard.cprogramming.com/c-programming/51247-current-system-time-milliseconds.html
time() 関数は秒単位で正確であり、より深い精度には他のライブラリが必要であると書かれています...