Dage tæller?

Tags:    delphi

Hej..

Jeg ville høre om der er nogle der vil hjælpe mig lidt med hvordan jeg kan lave et program der tæller hvor mange:

år, måneder, dage, timer, minutter, sekunder

der er gået fra en bestemt dag..

Kan dette lade sig gøre?

Mvh. SkypeR



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Efter som hverken år eller måneder er defineret som en constant tidsstørrelse ville en kode der talte korrekt kræve at man talte sig igennem en kalender,eller at du selv defineret en constant tid for dem.

de andre derimod er simple:
Fold kodeboks ind/udKode 




Hvis nu jeg har den her kode:

var
from:TDateTime;

sec,min,hou,day:integer;
begin
from:=RecodeDateTime(from,2006,12,5,23,59,59,0);
sec:=SecondsBetween(now,from);

min:=sec div 60;
sec:=sec mod 60;

hou:=min div 60;
min:=min mod 60;

day:=hou div 24;
hou:=hou mod 24;
//showmessage(DateToStr(from));
Label1.Caption := 'Dage:'+IntToStr(day)+' År:'+IntToStr(hou)+' Minutter:'+IntToStr(min)+' Sekunder:'+IntToStr(sec);
end;

Hvorfor siger den så 12 år?

Dage:0 År:12 Minutter:39 Sekunder:49



procedure TForm1.FormCreate(Sender: TObject);
var
from:TDateTime;

sec,min,hou,day:integer;
begin
from:=RecodeDateTime(from,2006,12,4,23,59,59,0);
sec:=SecondsBetween(now,from);

min:=sec div 60;
sec:=sec mod 60;

hou:=min div 60;
min:=min mod 60;

day:=hou div 24;
hou:=hou mod 24;
//showmessage(DateToStr(from));
showmessage('Days:'+IntToStr(day)+' Hours:'+IntToStr(hou)+' Minuts:'+IntToStr(min)+' Seconds:'+IntToStr(sec));
end;


http://www.scextra.frac.dk



Jeg har lige prøvet det, men der kommer fejl ved RecodeDateTime
og
SecondsBetween



der skal skrive DateUtils i uses



den burde såmænd virke denne metode, men den fejler altså hårdt hvis tidsafstanden blive mere end ca. 68 år, da der simpelthen ikke kan være flere sekunder i en integer.

jeg ved så ikke om secondsbetween kan returnere en int64, for så kan universets levealder jo være der et par gange :D hvilket burde være nok.

alternativt kunne man også selv kode en metode til det, men det bliver sq lidt syret, navnligt et eller andet sted i 1500 tallet hvor den 2. (så vidt jeg husker) oktober ikke bliver efterfulgt af den 3. :s

mvh Troels



rent faktisk er secondsbetween en int 64 function så han burde bare kunne skrive int64 i stedet for integer som jeg gjorde :).



du har oversat hours til år det er en fejl hours er timer



sorry :P Mig og engelsk er ikke så godt :P







t