C言語で使われる 1970/1/1 からの秒数による日時の表現を Delphi で使われる表現に変換する関数。
TCTime は今は Cardinal でもいいかなあと思うけど・・・。
type
TCTime = Int64;
const
CTimeZero = 25569; //EncodeDate(1970, 1, 1);
SecPerDay = 60 * 60 * 24;
function Bias: Integer;
var
TimeZone: TTimeZoneInformation;
begin
GetTimeZoneInformation(TimeZone);
Result := TimeZone.Bias * 60;
end;
function CTimeToDateTime(CTime: TCTime): TDateTime;
begin
Result := CTimeZero + (CTime - Bias) / SecPerDay;
end;
function DateTimeToCTime(DateTime: TDateTime): TCTime;
begin
Result := Round((DateTime - CTimeZero) * SecPerDay + Bias);
end;