忍者ブログ

FILETIMEからd_timeへの変換

http://support.microsoft.com/kb/167296 に、Unix Time(time_t)からFILETIMEへの変換方法が載っています。
d_timeは1970年1月1日からの経過時間で、Unix Timeとは始点は同様ですが、粒度が違います。

wftがFILETIMEを64ビット整数に格納したとして、オーバーフローを考慮しないとすれば、

d_time Win32FILETIME2d_time(ulong wft)
{
    wft -= 116444736000000000;    // 1970年までおろす。
    return wft * TicksPerSecond / 10000000;
}
という変換関数が書き下せます。Phobos内にはFILETIMEをd_timeに変換する部分があるのですが一度SYSTEMTIMEにしてから変換をかけています。理論上、FILETIMEからSYSTEMTIMEにするとミリ秒に丸められちゃうんですよね。そんな細かく使っているか確かめてもいませんし、神経質になるほどの粒度ではないんですが。

PR

2008/03/01 Programming Comment(0)

COMMENT

COMMENT FORM

NAME
MAIL
WEB
TITLE
COMMENT
PASSWORD

カテゴリー
 
 
 
最新記事
 
(03/28)
(05/31)
(03/21)
(03/19)
(12/26)
 
 
ブログ内検索
 
 
 
カレンダー
 
05 2020/06 07
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 
 
アーカイブ
 
 
 
最新TB
 
 
 
最新CM
 
 
 
リンク
 
 
 
Feed
 
 
 
注意点
 

英字のみのコメントは拒否しています。スパムの排除のためご理解をお願いいたします。(でも結構スルーされてしまいます。たまに掃除していますがご容赦のほどを。)

 
 
カウンター
 
 
 
アクセス解析