Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zeit(TDateTime) in Minuten berechnen?


bruce185 - So 06.09.09 11:36
Titel: Zeit(TDateTime) in Minuten berechnen?
Hallo,
ich möchte die aktuelle Zeit - die angegebene Zeit von meinem Programm berechnen und die Minuten ausgeben.

z.B.
wenn es jetzt z.B. 12:00 Uhr ist und in meinem Programm 15:30 Uhr angegeben wurde, dann möchte ich berechnen, in wieviel Minuten wieder 12 Uhr ist u.s.w.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  Zeit1,Zeit2: TDateTime;
begin
  //Uhrzeit vom Textfeld in Zeit1 speichern
  Zeit1 := StrToTime(edtStunden.Text+':'+edtMinuten.Text);

  //Aktuelle Uhrzeit in Zeit2 speichern
  Zeit2 := Time;


Wie berechne ich das jetzt am einfachsten?

MfG


Delete - So 06.09.09 11:42

Schau Dir einmal DateUtils.MinutesBetween an.


bruce185 - So 06.09.09 11:55

Danke Dir.

Damit kann ich nur die Differenz zwischen den beiden Zeit werten berechnen.

z.B. ist es jetzt 12:00 Uhr und in meinem Programm angegeben 15:30 Uhr.
Ein Tag hat 24 Stunden, also wäre es in 1230 Minuten wieder 12 Uhr.

oder es ist jetzt 15:30 Uhr und in meinem Programm angegeben 12:00 Uhr, dann wäre es in 210 Minuten 15:30 Uhr u.s.w.

Danke schonmal.

MfG


Delete - So 06.09.09 12:00

Ich versteht nicht ganz, welche Zeitdifferenz Du nun eigentlich ausgeben willst. Wozu brauchst Du die aktuelle Zeit? Ist das so gedacht, dass in Deinem Programm eine Uhrzeit angegeben wird und Du nun quasi einen "Minutencountdown" haben willst, der die Minuten bis zum Erreichen der angegebenen Uhrzeit ausgibt?


jfheins - So 06.09.09 12:03

Ich verstehe immernoch nicht was du willst :nixweiss:

Zitat:
oder es ist jetzt 15:30 Uhr und in meinem Programm angegeben 12:00 Uhr, dann wäre es in 210 Minuten 15:30 Uhr u.s.w.

Aber wenn es jetzt 15:30 Uhr ist dann ist doch in 210 Minuten 19:00 Uhr ?


bruce185 - So 06.09.09 12:10

user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Ich versteht nicht ganz, welche Zeitdifferenz Du nun eigentlich ausgeben willst. Wozu brauchst Du die aktuelle Zeit? Ist das so gedacht, dass in Deinem Programm eine Uhrzeit angegeben wird und Du nun quasi einen "Minutencountdown" haben willst, der die Minuten bis zum Erreichen der angegebenen Uhrzeit ausgibt?


Genau das habe ich vor, nur weiss ich jetzt nicht genau wie ich das am besten machen soll.

user profile iconjfheins hat folgendes geschrieben Zum zitierten Posting springen:
Ich verstehe immernoch nicht was du willst :nixweiss:

Zitat:
oder es ist jetzt 15:30 Uhr und in meinem Programm angegeben 12:00 Uhr, dann wäre es in 210 Minuten 15:30 Uhr u.s.w.

Aber wenn es jetzt 15:30 Uhr ist dann ist doch in 210 Minuten 19:00 Uhr ?


Da habe ich was falsch gesagt, sry, Du hast recht.

Danke schonmal.

MfG


Yogu - So 06.09.09 12:18

Hallo,

  1. Rechne die eingegebene Uhrzeit in ein TDateTime um
    Addiere den aktuellen Tag (nicht die Uhrzeit) zu deiner berechneten Zeit.
  2. Prüfe, ob die eingegebene Uhrzeit nach der aktuellen Zeit liegt; wenn nicht, addiere 1 Tag dazu
    1 Tag ist genau 1, wenn ich mich nicht irre.
  3. Berechne die Minuten zwischen den beiden TDateTimes
    Verwende MinutesBetween.

Das war's schon ;)

Grüße,
Yogu


Delete - So 06.09.09 12:21

Genauso habe ich mir das auch gedacht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function MinutesLeft(aTime: TTime): Integer;
begin
  aTime := Trunc(Now) + Frac(aTime);
  if aTime < Now then
    aTime := IncDay(aTime);
  Result := MinutesBetween(Now,aTime);
end;


bruce185 - So 06.09.09 12:29

Genau so habe ich das gemeint.

Vielen Dank für die Hilfe.

MfG