Delphi の TDateTime 型へマイクロ秒を入れて、取り出す
Delphi の TDateTime 型へマイクロ秒を入れて、取り出す
基本的な事ですが TDateTime型は、整数部が日付(1899/12/30からの経過)、小数部が時刻(24時間を1とする)の Double 型
なので、マイクロ秒は 1/1,000,000 秒を加算すればOK
EncodeTime の マイクロ秒版
- function EncodeTimeMicroSec(const AHour, AMin, ASec: Word; const AMicroSec: Cardinal): TDateTime;
- begin
- Result := EncodeTime(AHour, AMin, ASec, 0) + ((1/(60*60*24)) * AMicroSec / 1000000);
- end;
TDateTime をマイクロ秒表示
- function DateTimeToStrMicroSec(ADateTime: TDateTime): string;
- var Time: TTime;
- subSec: Extended;
- begin
- Result := FormatDateTime('yyyy-mm-dd hh:nn:ss', ADateTime);
- Time := Frac(ADateTime); // 時刻(小数部)のみ
- subSec := Frac(Time * 60 * 60 * 24); // 秒未満(小数部)のみ => 0.123456****
- Result := Result + '.' + Copy(FloatToStr(subSec), 3, 6);
- end;
使ってみる
- procedure Form1.Button1Click(Sender: TObject);
- var microDateTime: TDateTime;
- begin
- microDateTime := EncodeDate(2020, 6, 24) + EncodeTimeMicroSec(11, 34, 6, 123456);
- Caption := DateTimeToStrMicroSec(microDateTime);
- end;
コメント