Konwersja TDateTime na np. godziny

0

Witam

Podam przykład co chce osiągnąć:

var t1, t2: TDateTime; 

teraz robię:

 t2:=Now;

tutaj powiedzmy czekam kilka minut, godzin, dni i robię:

 t1:=Now;

Teraz chciałbym obliczyć różnicę czasu pomiędzy t1 a t2. Robiąc writeln(DateTimeToStr(t1-t2)) wychodzi mi kompletnie zły wynik (t2-t1 tak samo). Jak później mogę szybko zamienić tę datę i czas na sekundy? Za pomocą EncodeDate?

0

Teraz wpadło mi do głowy coś takiego: IntToStr(Trunc(t2 - t1) * 86400))

 
uses
 dateutils, sysutils;

 var t1, t2: TDateTime;


begin
t1:=Now;
sleep(3000);
t2:=Now;
writeln(TimeToStr(t2-t1));
writeln(SecondsBetween(Now, t1));
writeln(IntToStr(Trunc(t2 - t1) * 86400));
end.
  1. zwraca 3
  2. zwraca 3 (czasem 2)
  3. zwraca 0
0
writeln(Trunc((t2 - t1) * 86400));// zwraca 3 czasem 2
writeln(Round((t2 - t1) * 86400));// zwraca 3
0

Jest taka funkcja z modułu DateUtils SecondsBetween dla sekund, lub godzin HoursBetween ogólnie proponuje przejrzeć listę wszystkich funkcji z tego modułu jeśli chcesz coś zrobić z datą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1