Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeitdifferenz in Minuten berechnen (https://www.delphipraxis.net/125838-zeitdifferenz-minuten-berechnen.html)

invalid_operation 12. Dez 2008 19:01


Zeitdifferenz in Minuten berechnen
 
Zeitdifferenz in Minuten berechnen

Habe hier zwei Strings (sZeitVorher und sZeitNachher), die jeweils nur Uhrzeiten (kein Datum!) als string enthalten.

sZeitVorher = '23:34:45';
sZeitNachher = '12:23:34';

Wie bekomme ich raus, wieviele Minuten zwischen den beiden strings liegen?

sZeitNachher ist dabei *immer* neuer als sZeitVorher.

Negative Werte für die "Zeitdifferenz in Minuten" dürften/sollten hoffentlich nicht rauskommen.

Google-/DP-Suchtipps für mich?

DeddyH 12. Dez 2008 19:03

Re: Zeitdifferenz in Minuten berechnen
 
DateUtils.MinutesBetween, aber bei tagesübergreifenden Uhrzeiten könnte das noch Probleme geben.

Christian Seehase 12. Dez 2008 20:44

Re: Zeitdifferenz in Minuten berechnen
 
Moin Invalid_Operation,

leider fällt mir da keine Lösungshilfe ein, sondern nur eine Lösung:

Delphi-Quellcode:
var
  tiDiff  : Double;
  wdHour  : Word;
  wdMinute : Word;
  wdSecond : Word;
  wdMSec  : Word;

begin
  // Erst einmal die Zeitdifferenz berechnen
  tiDiff := StrToTime(edtNachher.Text)-StrToTime(edtVorher.Text);
  // Wenn der Wert negativ ist 24 Stunden aufaddieren.
  // Da die Vorkommastellen die Tage angeben muss 1 addiert werden.
  if tiDiff < 0 then tiDiff := tiDiff + 1;
  // und ausrechnen
  DecodeTime(tiDiff,wdHour,wdMinute,wdSecond,wdMSec);
  ShowMessage(IntToStr(wdHour*60+wdMinute));
end;

invalid_operation 13. Dez 2008 04:17

Re: Zeitdifferenz in Minuten berechnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Naamd Christian Seehase,

Dein vorkonfektionierter Lösungsvorschlag ist mir auch ganz recht :thumb:

Hab' ihn mal durchprobiert, siehe Anlage :oops:

Tausend Dank dafür :cat: :dp: :love:

[edit=Sharky]Doppelten Anhang gelöscht. Mfg, Sharky[/edit]

alzaimar 13. Dez 2008 08:30

Re: Zeitdifferenz in Minuten berechnen
 
Wieso so komplizier?
Delphi-Quellcode:
Minutes := Trunc (0.5 + 1440* (DateTime2 - DateTime1));

invalid_operation 13. Dez 2008 08:59

Re: Zeitdifferenz in Minuten berechnen
 
Zitat:

Zitat von alzaimar
Wieso so komplizier?
Delphi-Quellcode:
Minutes := Trunc (0.5 + 1440* (DateTime2 - DateTime1));

Weil die Uhrzeiten nur als String (ohne Datum) vorhanden sind und daher die Minutenzeitdifferenz negative Werte ergeben könnte, was bei mir eben nicht sein darf.

Bin mit der Lösung von Christian sehr zufrieden, merke mir aber Deinen Lösungsansatz für später auftauchende Problem vor :thumb:

Vielen Dank @all!

Fussball-Robby 13. Dez 2008 09:29

Re: Zeitdifferenz in Minuten berechnen
 
Zitat:

Zitat von invalid_operation
und daher die Minutenzeitdifferenz negative Werte ergeben könnte, was bei mir eben nicht sein darf.

Du kannst doch mit Delphi-Referenz durchsuchenAbs() den absoluten Wert der Differenz ermitteln (immer positiv).

invalid_operation 13. Dez 2008 09:47

Re: Zeitdifferenz in Minuten berechnen
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von invalid_operation
und daher die Minutenzeitdifferenz negative Werte ergeben könnte, was bei mir eben nicht sein darf.

Du kannst doch mit Delphi-Referenz durchsuchenAbs() den absoluten Wert der Differenz ermitteln (immer positiv).

Klar, logo, mach mal :-D

Da eine Stunde bekanntlich 100 Minuten hat, ist das sogar naheliegend!

@Sharky: Danke für das Weglöschen des doppelten Anhangs. Mach doch bitte noch zu hier :angel:

DeddyH 13. Dez 2008 10:07

Re: Zeitdifferenz in Minuten berechnen
 
So, damit ich nicht als Idiot dastehe, hier noch eine Lösung unter Verwendung von DateUtils:
Delphi-Quellcode:
function MinDiff(const sTime1, sTime2: string): Integer;
var Time1, Time2: TDateTime;
begin
  Time1 := Frac(StrToTime(sTime1));
  Time2 := Frac(StrToTime(sTime2));
  if CompareTime(Time1,Time2) > 0 then
    Time2 := IncDay(Time2);
  Result := MinutesBetween(Time1,Time2);
end;

invalid_operation 13. Dez 2008 10:23

Re: Zeitdifferenz in Minuten berechnen
 
Zitat:

Zitat von DeddyH
So, damit ich nicht als Idiot dastehe, hier noch eine Lösung unter Verwendung von DateUtils: (cut)

Sagt/meint wer?

Die schärfsten Kritiker der Elche
waren selber welche!

ZuhuHUHUhumachen oder in K&T verschieben!

LG
Ein Elch

SirThornberry 13. Dez 2008 10:37

Re: Zeitdifferenz in Minuten berechnen
 
Sorry, aber Threads werden hier nicht zugemacht wenn der Fragesteller seine Lösung hat.
Das hat mehrere Gründe.
- Eventuell hat jemand mal das gleiche Anliegen mit einer Ergänung und da ist es naheliegend so ein Thema aufzugreifen und fortzuführen
- Auch wenn dir die aktuellen Lösungen zusagen heißt es nicht das es keine besseren oder anderen Lösungen mehr gibt. Wenn das Thema offen bleibt können noch mehrere Varianten gepostet werden und es kann auch durchdiskutiert werden welche Vor- und Nachteile die entsprechenden Lösungen haben. Das hat dann den Vorteil das jemand mit dem gleichen Anliegen sich die für ihn beste Lösung heraus suchen kann. Würden wir einfach zu machen wäre eventuell die benötige Lösung des nächsten mit dem gleichen/ännlichen Problem hier nicht zu finden.
-...

[Edit]
:-D

invalid_operation 13. Dez 2008 10:47

Re: Zeitdifferenz in Minuten berechnen
 
@SirThornberry: OK!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz