Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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