Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Time <-> Millisekunden (https://www.delphipraxis.net/209055-time-millisekunden.html)

AJ_Oldendorf 19. Okt 2021 09:54


Time <-> Millisekunden
 
Hallo,
in der Unit System.DateUtils gibt es die Funktion "TimeToMilliSeconds".
Diese rechnet mir aus einer angegeben Zeit, die Millisekunden aus.
Gibt es sowas auch andersrum? Gefunden habe ich nichts dazu. Also aus Millisekunden eine Zeit machen?
Ich weiß, wie ich das "zu Fuß" machen muss, dachte aber, da gibt es etwas fertiges?

Delphi.Narium 19. Okt 2021 10:08

AW: Time <-> Millisekunden
 
Bei TDateTime gilt:

1 = 1 Tag

Ein Tag hat 24 Stunden
zu 60 Minuten = 24 * 60 = 1440 Minuten
zu 60 Sekunden = 1440 * 60 = 86400 Sekunden
zu 1000 Millisekunden = 86400 * 1000 = 86400000 Millisekunden

1 Millisekunde = 1 / 86400000 = 1,1574074074074074074074074074074e-8 Tage
Delphi-Quellcode:
function MilliSecondsToTime(AMilliSeconds : Cardinal) : TDateTime;
begin
  Result := AMilliSeconds / 86400000;
end;

AJ_Oldendorf 19. Okt 2021 10:16

AW: Time <-> Millisekunden
 
Hi Delphi.Narium,
danke. Das "zu Fuß" bzw. selber eine Funktion machen, hatte ich ja erwähnt, dass ich dies habe.
Ich war nur selber überrascht, was es alles schönes in der DateUtils gibt und hatte keine von Delphi mitgelieferte Funktion gefunden. Wollte daher nur wissen, ob es diese irgendwo gibt (vielleicht unter einem anderen Namen etc).
Ich nehme lieber fertige, mitgelieferte Funktionen anstatt neue ;-)

Stevie 19. Okt 2021 11:03

AW: Time <-> Millisekunden
 
Am nächsten würde wohl
Delphi-Quellcode:
IncMilliSecond(0, ms)
kommen, wenn man nix eigenes schreiben möchte.

Uwe Raabe 19. Okt 2021 11:12

AW: Time <-> Millisekunden
 
Eine Funktion dafür gibt es meines Wissens nicht, aber man kann das auch direkt so schreiben:
Delphi-Quellcode:
var
  myTime: TTime;
  myMilliSeconds: Int64;
begin
  myTime := TimeOf(Now);
  myMilliSeconds := TimeToMilliseconds(myTime);
  myTime := myMilliSeconds*OneMillisecond;
end;

himitsu 19. Okt 2021 19:55

AW: Time <-> Millisekunden
 
Außerdem gibt es schöne Konstanten zum Umrechnen, anstatt so komischer undokumentierter nummerischer Werte.

Delphi-Quellcode:
  // System.SysUtils

  HoursPerDay  = 24;
  MinsPerHour  = 60;
  SecsPerMin   = 60;
  MSecsPerSec  = 1000;
  MinsPerDay   = HoursPerDay * MinsPerHour;
  SecsPerDay   = MinsPerDay * SecsPerMin;
  SecsPerHour  = SecsPerMin * MinsPerHour;
  MSecsPerDay  = SecsPerDay * MSecsPerSec;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz