2009-07-02 6 views

答えて

5

POSIX.1とBSDで定義されているgettimeofday(2)を使用します。

sys/time.hからstruct timevalに定義されている秒数とマイクロ秒を返します。

0

時間を取得し、さまざまな形式に変換するhereのコード例はCです。

7

これは簡単な方法です:午前0時からおおよそのミリ秒を取得するには

time_t seconds_since_midnight = time(NULL) % 86400; 

、あなたがより多くの解像度を(あなたが本当にやるかどうかを検討)が必要な場合は、あなたがする必要があります1000

seconds_since_midnightを掛けますgettimeofday()のような別の関数を使用してください。

0

(gmtimeは見てみましょう)協定世界時(UTC)に直接変換する...

8

これは、正確な方法である:

struct timeval tv; 
int msec = -1; 
if (gettimeofday(&tv, NULL) == 0) 
{ 
    msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec/1000); 
} 

以来msecにミリ秒数を格納します真夜中。 (または-1時間を取得中にエラーが発生した場合。)

それはintに時間値を格納するために、通常は悪い考えですが、私は少し傲慢さとintを仮定している少なくとも32ビットであります範囲(-1)を86,400,000に容易に適合させることができる。

しかし、それはすべての努力の価値があるかどうかわかりません。

+1

私が知っているCによれば、あなたのコードに何か問題があるようです。おそらく、 'msec'を事前に宣言しておき、' else'も使用してください。 – ThoAppelsin

+0

@ThoAppelsin良い点。修正されました。ありがとう! – scraimer

関連する問題