Toon posts:

[Delphi] Rekenen aan tijdsnotaties

Pagina: 1
Acties:
  • 319 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil dus het volgende :

2 tijdsnotaties van elkaar aftrekken, en dan het resultaat in minuten en seconden terugkrijgen.

Nu heeft Delphi mooie functies zoals TimeToStr en DecodeTime, maar daar kun je verder niet mee rekenen.

Is er iemand die dit ook wel eens gedaan heeft, of die hier een standaardfunctie voor weet ???

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

je kan tijden gewoon van elkaar aftrekken, tenzij je ze natuurlijk om gaat zetten in strings ofzo.. dan moet je moeilijk gaan doen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

je kan 2 waardes van het type tdatetime (= double) gewoon van elkaar aftrekken.

Verwijderd

Je kunt gewoon twee TDateTime van elkaar aftrekken en daarna weergeven met de daarvoor gemaakte routines..

Verwijderd

Topicstarter
dus stel je hebt het volgende :

tijd 1,tijd 2, tijd 3 : string;

tijd 1 := TimeToStr(Time);
tijd 2 := TimeToStr(Time);

tijd 3 := tijd1-tijd2;

zoiets ?

  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Dat kan wel,

twee dates van elkaar aftrekken en dan laten weer omzetten naar een string.

http://www.jawal.nl


  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Ken je de functie Julian? dan maak je van je tijd/datum een heel groot getal... moet je ff op inet zoeken. Als ik um snel kan vinden post ik um wel ff.

http://www.gnomehome.demon.nl/uddf/pages/dates.htm

Werkt op de zelfde manier... gewoon alles vervuldigen uren*60*60 + minuten * 60 + seconden * 1

Of je gebruikt encodetime en gebruik zo als hier boven wordt gezegt TDatetime = double dus gewoon van elkaar afhalen.

Steun Elkaar, Kopieer Nederlands Waar!


Verwijderd

Topicstarter
ja ok, maar ik wil niets met dates doen ! alleen met time !

  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Wat dacht je dat er zou gebeuren als je twee DATETIME waarden van elkaar aftrekt waarvan de datum hetzelfde is.

Houd je dan niet het tijdsverschil over ?

http://www.jawal.nl


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

zoiets

var
Hour, Min, Sec, MSec : Word;
tijd1, tijd2 ,tijd : TDateTime;
weergeven : string;

begin
tijd1 := now;
tijd2 := Wat je wil aftrekken;
tijd3 := tijd1 -tijd2;
tijd3 := DecodeTime (tijd3, Hour, Min, Sec, MSec);
weergeven := TimeToStr(tijd3);

end;

edit:

verbeter fout

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Een TDateTime is een Double die het aantal dagen sinds een bepaalde dag telt (was dat niet 1 jan 1972?)
iig. Met een double kun je vanalles uitvoeren.
bedenkt wel dat deze double niet nauwkeurig genoeg is voor wetenschappelijke doeleinden. Maar ik verwacht niet dat iemand op de GOT zich daarmee bezighoudt....

Localhost, sweet localhost


Verwijderd

Topicstarter
thanks voor jullie replies ! ik ga ff verder proberen...

Verwijderd

Als je zeker wilt weten dat je alleen de tijden hebt dan zou je eventueel naar de functie FRAC() kunnen kijken..

Verwijderd

Topicstarter
Op maandag 10 december 2001 16:33 schreef cimbom het volgende:
zoiets

var
Hour, Min, Sec, MSec : Word;
tijd1, tijd2 ,tijd : TDateTime;
weergeven : string;

begin
tijd1 := now;
tijd2 := Wat je wil aftrekken;
tijd3 := tijd1 -tijd2;
tijd3 := DecodeTime (tijd3, Hour, Min, Sec, MSec);
weergeven := TimeToStr(tijd3);

end;

edit:

verbeter fout
hierbij krijg ik de volgende foutmelding :

Incompatible types : 'TDateTime' and 'procedure, untyped pointer or untyped parameter' ????

Verwijderd

Topicstarter
iemand nog een oplossing ????

Verwijderd

code:
1
2
3
4
function TijdVerschilToString(const ATime1, ATime2: TDateTime): string;
begin
  Result := TimeToStr(ATime1 - ATime2);
end;

Verwijderd

Topicstarter
dat werkt inderdaad, maar als ik dan de functie decodetime aanroep, krijg ik een wazige foutmelding.

tijd3 := tijd1-tijd2;
tijd := DecodeTime(tijd3,Hour,Min,Sec,MSec);
weergeven := TimeToStr(tijd);

Verwijderd

DecodeTime is een procedure, geen functie.

Verwijderd

Topicstarter
Op maandag 10 december 2001 17:34 schreef DiFool het volgende:
DecodeTime is een procedure, geen functie.
DOH !!!!
|:(

ps : thanks voor je reactie, ik zag het echt effe niet meer :)

  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

Op maandag 10 december 2001 17:34 schreef DiFool het volgende:
DecodeTime is een procedure, geen functie.
klopt |:( sorry ik was er even niet bij

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
In Delphi 6 bestaat ook de datedif functie en die doet precies wat je wilt.

Verwijderd

Op maandag 10 december 2001 20:43 schreef yodax het volgende:
In Delphi 6 bestaat ook de datedif functie en die doet precies wat je wilt.
DateDif (of DateDiff, lijkt me logischer) kan ik in de help van Delphi 5 Enterprise, Delphi 6 Personal en Kylix 1 Desktop Developer niet terugvinden... In welke unit staat 'ie?

Maar aangezien TDateTime gewoon een Double is, is het rekenen met data niet erg lastig.
Bv. om 2 tijden van elkaar af te trekken:

ShowMessage('Dat duurde ' + IntToStr(Round(tijd2 - tijd1) * 86400) + ' seconden');

of

ShowMessage('Daar ging zoveel tijd overheen: ' + FormatDateTime('hh:nn:ss', tijd2 - tijd1));

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Whoeps :+ , dat was een MSSQL functie. Sorry.

Deze werkt wel:
code:
1
2
3
4
5
6
7
      else if Interval = si45Minuten then
      begin
        if MinuteSpan(Now,LastRun) > 45 then
        begin
        RunScript := true;
        end;
      end

Het zit in de DateUtils unit.
Pagina: 1