timeGetTimeで取得したデータから時刻データを作成するためには?

解決


とむ  2007-02-01 06:21:49  No: 64351

いつもお世話になっております。

timeGetTimeで取得したms単位のデータから時刻データを作成したいと考えております。

具体的には、timeGetTimeから1ms間隔でデータを取得し、その値を以下のイメージの時刻データで表示したいと考えております。

18:20:13.123
18:20:13.124
    :
18:20:14.001

また、プログラムイメージは以下のような感じです。
--------------------------------------------------
int i ;
DWORD sTime ,eTime ;

etime = timeGetTime() ;
for (i=0 ; i < 1000 ; i++)
{
    while ((sTime = timeGetTime()) == etime) ;

    XXXXXX <--- ここで sTime を現在時刻に変換したい
    printf ("%02d:%02d:%02d.%03d" ,.....) ;

    etime = timeGetTime() ;
}

timeGetTime()で取得したデータから現在時刻を作成するようなAPIをネットで探しているのですが、お恥ずかしい話、うまく見つける事ができません。

つたない説明で分かり難いと思いますが、何かよい方法が御座いましたらご教授の程、宜しくお願い致します。


超初心者  2007-02-01 07:24:40  No: 64352

MSDNを見たら
> システム時刻をミリ秒単位で取得します。
> システム時刻は Windows が起動してから経過した時間です。

となっているから現在時刻というのは考えていないんじゃないの。


  2007-02-01 07:29:36  No: 64353

存在しないものは求めようもない
timeGetTimeはシステム起動時からの経過時間を返しているだけ
約49日で0に戻る
GetLocalTimeで一応msec単位までの刻とれますよ
1msecの精度はないでしょうけど…


とむ  2007-02-01 18:37:06  No: 64354

GetLocalTimeで時刻取得を試してみたのですが、ご指摘の通り、1msecの精度を得られませんでした。
処理の始めにGetLocalTimeで時刻を取得して、1msecづつ足し込んでいくしかないのかも知れませんね。
ちなみに、Windowsが起動した時刻は取得できるのでしょうか?


tetrapod  2007-02-01 18:42:20  No: 64355

精度と分解能は違う。

そもそも Windows ってそんなリアルタイムは処理は保証されていない。
1msec が必要な処理は Windows で行うべき案件ではないと思う。


とむ  2007-02-02 23:45:12  No: 64356

あれから色々と検討した結果、時刻の設定が不要になりましたので、当該質問については解決とさせて頂きます。
皆様、ご協力ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加