[Delphi] Verschil datetime

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik wil de gebruiker laten weten hoelang mijn applicatie draait.

Dus bij het starten sla ik de start tijd op:
code:
1
2
3
4
procedure TMainForm.FormCreate(Sender: TObject);
begin
  ServerStart := Now;
end;

En ik doe elke seconde:
code:
1
  Label1.Caption := FormatDateTime('hh:nn:ss', Now - ServerStart);

Dit werkt goed, todat de applicatie langer als 24 uur draait, dan gaaft ie 00:00:00 aan.

Hoe doe ik dit goed, dat er ook dagen voor staan. 'dd hh:nn:ss' werkt niet goed als DateTime format en dan heeft ie weer een beperking op 30 dagen ofzo.

Moet ik dan zelf een functie maken die het goed berekend?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Hoe verwacht je je output? Moet hij continu zijn notatie uitbreiden? Of gewoon het aantal dagen doortellen (bijv. 315 dagen 23:59:59)?

|_____vakje______|


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Telkens als je Time op 0:00:00 komt komt er toch gewoon een dag bij, niet?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Yep: d hh:nn:ss

Waar d = dagen, en altijd door loopt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Misschien snap ik het niet goed, maar waar gaat het fout als je gewoon het aantal dagen bijhoudt en je tijd (uren min en sec) gewoon laat doorlopen?

Als er een restrictie op je timer zit van een bepaalde periode kan je je timer -voor het verstrijken van die periode- toch resetten? (bv op 0:00:00)

Verwijderd

Delphi slaat de tijd als volgt op:
Voor de komma het aantal dagen, achter de komma de milliseconden.
Zelf het aantal uren tellen als je TDateTime groter of gelijk is aan 1 lijkt me dus geen slecht idee.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Gebruik een andere functie om een rekenbare waarde van je tijdsverschil te krijgen.. Bijv. het aantal seconden tussen de 2 tijdstippen.

Geeft de uren:minuten:seconden gewoon weer zoals je het nu doet, maar zet ervoor het aantal dagen wat je (in het geval van seconde berekent door het te delen door (24*60*60) en dan naar beneden af te ronden.
code:
1
2
Dagen = Floor(TijdInSeconde / 24*60*60)
Label1.Caption := Dagen + ' dagen en ' + FormatDateTime('hh:nn:ss', Now - ServerStart);

|_____vakje______|

Pagina: 1