Delphi の TDateTime 型へマイクロ秒を入れて、取り出す

Delphi の TDateTime 型へマイクロ秒を入れて、取り出す

基本的な事ですが TDateTime型は、整数部が日付(1899/12/30からの経過)、小数部が時刻(24時間を1とする)の Double 型
なので、マイクロ秒は 1/1,000,000 秒を加算すればOK

EncodeTime の マイクロ秒版
  1. function EncodeTimeMicroSec(const AHour, AMin, ASec: Word; const AMicroSec: Cardinal): TDateTime;  
  2. begin  
  3.     Result := EncodeTime(AHour, AMin, ASec, 0) + ((1/(60*60*24)) * AMicroSec / 1000000);  
  4. end;  

TDateTime をマイクロ秒表示
  1. function DateTimeToStrMicroSec(ADateTime: TDateTime): string;  
  2. var Time: TTime;  
  3.     subSec: Extended;  
  4. begin  
  5.     Result := FormatDateTime('yyyy-mm-dd hh:nn:ss', ADateTime);  
  6.     Time := Frac(ADateTime); // 時刻(小数部)のみ  
  7.     subSec := Frac(Time * 60 * 60 * 24); // 秒未満(小数部)のみ => 0.123456****  
  8.     Result := Result + '.' + Copy(FloatToStr(subSec), 36);  
  9. end;  

使ってみる
  1. procedure Form1.Button1Click(Sender: TObject);  
  2.     var microDateTime: TDateTime;  
  3. begin  
  4.     microDateTime := EncodeDate(2020624) + EncodeTimeMicroSec(11346123456);  
  5.     Caption := DateTimeToStrMicroSec(microDateTime);  
  6. end;  

コメント