Avatar billede padkjaer Nybegynder
30. april 2001 - 22:53 Der er 24 kommentarer og
1 løsning

1/4 2001 kl20:00 til 1/5 2005 kl 21:15 hvordan regnes det ud i delphi

jeg skal gerne bruge en kode hvor man kan loade til, dato og år ind og så regne ud hvor langt tid der er til en anden dato
how do i do that.

/padden
ps. flere points hvis koden kommer hurtig pga det haster lidt:)
Avatar billede padkjaer Nybegynder
30. april 2001 - 22:58 #1
200 points mere på.... kom nu!
Avatar billede makse Nybegynder
30. april 2001 - 23:05 #2
Jeg har da et Dato til Dato program til Delphi 5 liggende.
Det er ikke noget jeg selv har lavet, men måske du kan bruge noget af det.
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:09 #3
jeg ville være meget taknemmelig
hvis koden altså er med :)
Avatar billede makse Nybegynder
30. april 2001 - 23:10 #4
Yup, det hele er med.
Mail?
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:11 #5
dsl28305a@post.cybercity.dk :) langt shit
Avatar billede makse Nybegynder
30. april 2001 - 23:13 #6
Sendt.
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:14 #7
tnx ser lige på det!
Avatar billede dna Nybegynder
30. april 2001 - 23:18 #8
øøhh... I kender jo reglerne !!! Alle skal have glæde af svaret  !!!!
Avatar billede makse Nybegynder
30. april 2001 - 23:24 #9
dna > jeg kan da sende det samme til dig?
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:25 #10
jeg kan uppe det somewhere?!?!? hvis det er iorden?=
Avatar billede dna Nybegynder
30. april 2001 - 23:26 #11
Det er ikke det jeg mente.. meningen med eksperten.dk er jo at skabe en vidensdatabase, sådan at når lille Peter om 3 måneder står med samme problem, så kan han finde dette spørgsmål og finde løsningen herinde... Derfor er disse send-til-mail løsninger ikke optimale...

dna
Avatar billede makse Nybegynder
30. april 2001 - 23:28 #12
dna > Selvfølgelig. :) Padkjaer kan jo så poste resultatet her, hvis det kan bruges.
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:34 #13
nu har jeg oprettet www.whitehat.dk/padden/delphi/ og der er filerne :)
men er ikke helt færdig med at uppe
sender hele stien om 2 sec
Avatar billede padkjaer Nybegynder
30. april 2001 - 23:38 #14
Avatar billede borrisholt Novice
01. maj 2001 - 06:27 #15
Fidusen er at en Date er en alm FLoat. Ikke andet. Heltals delen er antal dage siden en gang for længe siden, kan ikke huske præcis hvad men vil kunne findes i Online hjælpen, men ikke vigtigt for løsningen af opgaven.

Fidusen er så at bruge funktionerne  de det eksempel padkjaer kom med. Så beregner du dig ned i gennem det.

Dette er den overordnede måde at gøre det på, eller teorien. Et eksemple kan downloades på adressen :

http://borrisholt.com/Eksperten/dateDiff.zip

Jens B (http://fotx.net/borrisholt)
Avatar billede borrisholt Novice
01. maj 2001 - 07:41 #16
Jeg trækker lige mit svar tilbage ....

De funktioner som der var i det Dato biblotek, kan ikke bruges til noget. Der er også fejl der i. DayDiff skal laves sådan her :

function DayDiff(Beginning: TDateTime; Ending:TDateTime): integer;
begin
    Result := Trunc(Ending -Beginning);
end;


og så tager den ikke højde for negative værdiet. etc. etc. Generelt retunerer den noget hest.

Fidusen er du finder først antalet af dage ved at trække de to heltals dele fra hinanden. Når så det er gjort er det KUN rest delen der er intressant.

Du finder tids spændet ved at trække de to rester fra hindanden og kører det gennem DecodeTime() funktionen så er resten lige til.

Et nyt eksempel kan findes her :
http://borrisholt.com/Eksperten/dateDiff.zip

Hvis du allerede har downloadet det gamle så slet det ....

Jens B (http://fotx.net/borrisholt)
Avatar billede martinlind Nybegynder
01. maj 2001 - 10:00 #17
TDatetime typen i delphi er lavet så du bare kan Lægge til og trække fra, og så findes der div rutiner i delphi til at steppe en md. frem eller tilbage, IncMonth() hedder den vist.

/Martin
Avatar billede borrisholt Novice
01. maj 2001 - 17:13 #18
padkjaer  >> Hvis det haster så meget så ville det være på sin plads med hurtig respons fra din side.

Jens B (http://fotx.net/borrisholt)
Avatar billede padkjaer Nybegynder
01. maj 2001 - 19:30 #19
sorry mange gange
jeg har arbjedet som en hest idag, alle var sure, alle sager hastede :(
men nu er jeg her
jeg har faktisk brugt makses eksempel, så han fortjener de fleste points, men i andre må da gerne få 25 for ulejligheden :)
Avatar billede padkjaer Nybegynder
01. maj 2001 - 19:30 #20
hey makse svar lige ik´:))
Avatar billede borrisholt Novice
02. maj 2001 - 07:37 #21
padkjaer >> Fair med mig. Der undere mig lidt du kan bruge hans software, fordi jeg forsøgte og fandt en masse fejl der i.

Hvis vi nu tager det følgende eksempel :

START :
  1/4 2001 kl 20:00
STOP
  1/5 2005 kl 21:15

Så går det fint.

Hvis nu vi bytter rundt på klokken :

START :
  1/4 2001 kl 21:15
STOP
  1/5 2005 kl 20:00

Så regner den galt. Dels er der en dag for meget på og dels render minutterne i skoven. Derfor skrev jeg noget nyt.

Jens B
Avatar billede palle_hansen Nybegynder
02. maj 2001 - 10:01 #22
Hej

Her er nogle functioner til beregning af forskellen mellem 2 datoer.

{----------------------------------------------------------------------------}

function mSecFromMidnight(Time:TDateTime):longint;
begin
  Result:=Trunc(24*60*60*1000*Frac(Time));
end;

{----------------------------------------------------------------------------}

function SecFromMidnight(Time:TDateTime):longint;
begin
  Result:=Trunc(24*60*60*Frac(Time));
end;

{----------------------------------------------------------------------------}

function MinFromMidnight(Time:TDateTime):longint;
begin
  Result:=Trunc(24*60*Frac(Time));
end;

{----------------------------------------------------------------------------}

function Delta_mSec(Time1,Time2:TDateTime):longint;
var
  dt : extended;
begin
  dt:=abs(24*60*60*1000*(Time2-Time1));
  if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt);
end;

{----------------------------------------------------------------------------}

function Delta_Sec(Time1,Time2:TDateTime):longint;
var
  dt : extended;
begin
  dt:=abs(24*60*60*(Time2-Time1));
  if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt);
end;

{----------------------------------------------------------------------------}

function Delta_Min(Time1,Time2:TDateTime):longint;
var
  dt : extended;
begin
  dt:=abs(24*60*(Time2-Time1));
  if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt);
end;

{----------------------------------------------------------------------------}

function Delta_Hour(Time1,Time2:TDateTime):longint;
var
  dt : extended;
begin
  dt:=abs(24*(Time2-Time1));
  if (MaxLongint<dt) then Result:=MaxLongint else Result:=Trunc(dt);
end;

{----------------------------------------------------------------------------}

function Delta_Day(Time1,Time2:TDateTime):longint;
begin
  Result:=Trunc(abs(Time1-Time2));
end;

{----------------------------------------------------------------------------}

function Delta_Month(Time1,Time2:TDateTime):longint;
var
  Date1,Month1,Year1 : word;
  Date2,Month2,Year2 : word;
  SwapTime          : TDateTime;
begin
  if (Time2<Time1) then
  begin
    SwapTime:=Time1;
    Time1:=Time2;
    Time2:=SwapTime;
  end;
  DecodeDate(Time1,Year1,Month1,Date1);
  DecodeDate(Time2,Year2,Month2,Date2);
  Result:=12*longint(Year2)+Month2-(12*Longint(Year1)+Month1);
  if (Date2<Date1) then dec(Result);
end;

{----------------------------------------------------------------------------}

function Delta_Year(Time1,Time2:TDateTime):longint;
var
  Date1,Month1,Year1 : word;
  Date2,Month2,Year2 : word;
  SwapTime          : TDateTime;
begin
  if (Time2<Time1) then
  begin
    SwapTime:=Time1;
    Time1:=Time2;
    Time2:=SwapTime;
  end;
  DecodeDate(Time1,Year1,Month1,Date1);
  DecodeDate(Time2,Year2,Month2,Date2);
  Result:=Year2-Year1;
  if (Month2*30+Date2<Month1*30+Date1) then dec(Result);
end;

{----------------------------------------------------------------------------}

mvh.
palle

Avatar billede borrisholt Novice
07. maj 2001 - 12:41 #23
padkjaer >>> ?????

JEns B
Avatar billede padkjaer Nybegynder
26. maj 2001 - 23:38 #24
har faktisk opgivet det projekt for længst nu :(
men tak for jeres svar
Avatar billede martinlind Nybegynder
27. maj 2001 - 00:38 #25
Inden du sådan opgiver så prøv lige at checke denne her :

function DiffDates( dFrom,dTo : TDateTime ) : Integer;
VAR
  s1,s2 : TTimeStamp;
begin
  S2 := DateTimeToTimeStamp(dTo);
  S1 := DateTimeToTimeStamp(dFrom);
  Result := S2.Date - S1.Date;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Format(\'Day between : %d\',[DiffDates(DateTimePicker1.DateTime,DateTimePicker2.DateTime)]);
end;


Det så ud til at virke, så hvorfor gøre tingende sværre end højts nødvendigt

/Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester