9

System.currentTimeMillis()Cにおける Java の等価物は何ですか?

4

5 に答える 5

3

Check time.h、おそらくgettimeofday()関数のようなもの。

次のようなことができます

struct timeval now;
gettimeofday(&now, NULL);

now.tv_sec次に、とから値を取得して時間を抽出できますnow.tv_usec

于 2012-04-11T00:51:08.640 に答える
3

Linux やその他の Unix 系システムでは、clock_gettime(CLOCK_MONOTONIC)を使用する必要があります。これが利用できない場合 (Linux 2.4 など)、gettimeofday()にフォールバックできます。後者には、クロック調整の影響を受けるという欠点があります。

Windows では、 QueryPerformanceCounter()を使用できます。

私のこのコードは、上記のすべてを単純なインターフェイスに抽象化し、ミリ秒数を int64_t として返します。返されるミリ秒の値は、相対的な使用 (タイムアウトなど) のみを目的としており、特定の時間に関連していないことに注意してください。

于 2012-04-11T01:05:38.360 に答える
1

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()を使用する方が一般的です。

于 2012-04-11T00:56:27.287 に答える
0

このスレッドを参照してください: http://cboard.cprogramming.com/c-programming/51247-current-system-time-milliseconds.html

time() 関数は秒単位で正確であり、より深い精度には他のライブラリが必要であると書かれています...

于 2012-04-11T00:49:02.907 に答える