Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Funktion "DateTimeToTimeStamp" in Delphicode übersetzen

  Alt 17. Nov 2011, 14:12
Ich hätte jetzt zwar noch auf die zwei zusätzlichen Variablen verzichtet, was allerdings an der Funktion nix ändert.
Delphi-Quellcode:
function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
var
  LDateTimeInMSecs: Int64;
begin
  LDateTimeInMSecs := Round(DateTime * MSecsPerDay);
  Result.Date := (LDateTimeInMSecs div MSecsPerDay) + DateDelta;
  Result.Time := Abs(LDateTimeInMSecs) mod MSecsPerDay;
end;
Und wenn man jetzt mal ganz billig LDateTimeInMSecs := Trunc(DateTime * MSecsPerDay); statt LDateTimeInMSecs := Round(DateTime * MSecsPerDay); verwendet.
Delphi-Quellcode:
function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
begin
  Result.Date := Trunc(DateTime) + DateDelta;
  Result.Time := Trunc(Frac(DateTime) * MSecsPerDay));
end;
Achtung: Vor dem 30.12.1899 würde diese Variante nicht korrekt rechnen.
Eigentlich ja Result.Time := Trunc(Abs(Frac(DateTime)) * MSecsPerDay)); , aber da es in jenem negativen Bereich eh falsch rechnet, ist dieses nun auch sowas von egal.
$2B or not $2B

Geändert von himitsu (17. Nov 2011 um 14:16 Uhr)
  Mit Zitat antworten Zitat