Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zeitdifferenz "ordentlich" formatiert darstellen (https://www.delphipraxis.net/32577-zeitdifferenz-ordentlich-formatiert-darstellen.html)

Alex_ITA01 25. Okt 2004 16:04


Zeitdifferenz "ordentlich" formatiert darstellen
 
Hi @all
ich hab da mal eine Frage zu dem TDateTime-Format.
Und zwar habe ich folgendes Problem:
Ich habe eine Zeitdifferenz (natürlich auch von zwei Zeiten) im Format TDateTime.
Nun möchte ich diese Zeit je nachdem ob sie größer als 59 Sekunden ist,59Minuten 23Stunden... usw. auswerten.
Viele sagen jetzt MinutesBetween,SecondsBetween usw. nur das hilft.
An einem Beispiel erklärt:
Die erste Zeit: 12:03:24 (hh:mm:ss:)
Die zweite Zeit: 14:27:54 (hh:mm:ss:)

Zeitdifferenz: 02:24:30 (hh:mm:ss) (ich hoffe ich habe richtig gerechnet :-) )

Jetzt kann die Zeitdifferenz aber auch größer als Stunden sein...
Beispiel:
Zeit1: 12.03. 11:22:33 (dd.mm. hh:mm:ss)
Zeit2: 14.03. 12:33:44 (dd.mm. hh:mm:ss)

Zeitdifferenz: 02 01:11:11 (dd hh:mm:ss)
(Die Formatierung wie was aussieht erstmal ausgeschlossen...)

Wisst ihr wie ich das mache? Aus einer Zeitdifferenz zu analysieren wie groß der Unterschied ist (Sekunden,Minuten,Stunden,Tage...) und das dann dementsprechend darzustellen.

Ich hoffe ihr könnt mir da helfen
MFG Alex

paresy 25. Okt 2004 16:18

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
Delphi-Quellcode:
procedure TfrmScriptEvents.tmrRunningTimer(Sender: TObject);
const sDay = 60 * 60 * 24;
      sHour = 60 * 60;
      sMin = 60;
var xSecs : Integer;
    xMins : Integer;
    xHours: Integer;
    xDays : Integer;
begin

  xSecs := Abs(SecondsBetween(Now, fNextRun));

  xDays := xSecs div sDay;
  xHours := (xSecs - xDays * sDay) div sHour;
  xMins := (xSecs - xDays * sDay - xHours * sHour) div sMin;
  xSecs := xSecs - xDays * sDay - xHours * sHour - xMins * sMin;

  if (xDays > 0) or (xHours > 0) or (xMins > 0) or (xSecs > 0) then
   lblNextRun.Caption := Format('%d + %.2d:%.2d:%.2d', [xDays, xHours, xMins, xSecs])
  else
   begin
    lblNextRun.Caption := 'Running';
    FormShow(Self); //update
   end;

end;
hier nen aussschnitt aus nem code den ich mal in nem projekt benutzt hatte... und nen coutdown anzuzeigen und wenn er die differenz <= 0 ist dann zeigt er "running" an.

paresy

Alex_ITA01 26. Okt 2004 10:15

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
danke für den source.
Ich wollte dich mal fragen @paresy, ob ich den code noch auf monate und jahre erweitern kann?

MFG Alex

himitsu 26. Okt 2004 12:29

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
z.B.
Delphi-Quellcode:
If YearsBetween(Zeit1, Zeit2) <> 0 Then
  S := IntToStr(YearsBetween(Zeit1, Zeit2)) + ' Jahre'
Else If MonthsBetween(Zeit1, Zeit2) <> 0 Then
  S := IntToStr(MonthsBetween(Zeit1, Zeit2)) + ' Monate'
Else If WeeksBetween(Zeit1, Zeit2) <> 0 Then
  S := IntToStr(WeeksBetween(Zeit1, Zeit2)) + ' Wochen ' + IntToStr(Round(Abs(Zeit) - WeeksBetween(Zeit1, Zeit2) * 7)) + ' Tage'
Else If DaysBetween(Zeit1, Zeit2) <> 0 Then
  S := IntToStr(DaysBetween(Zeit1, Zeit2)) + ' Tage ' + TimeToStr(Abs(Zeit) - DaysBetween(Zeit1, Zeit2))
Else
  S := TimeToStr(Abs(Zeit1 - Zeit2));
Bei Monaten und Jahren ist es ein bissl schwerer genauere Angaben, zu den kleineren Einteilungen zu machen, da 1 Jahr/1 Monat nunmal keine feste Anzahl an Tagen/Stunden... hat.

Alex_ITA01 26. Okt 2004 12:34

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
danke himitsu...
ich konnte mir schon denken das es problematisch wird weil Monat und Jahr wie du schon sagtest, nicht immer die gleiche Anzahl von Tagen haben.
Aber trotzdem danke
MFG Alex

Alex_ITA01 26. Okt 2004 12:42

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
@himitsu:
die Variable zeit, welche muss das sein? Zeit1 oder Zeit2? :gruebel:

MFG Alex

CJ_lux 10. Aug 2008 13:43

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
Zitat:

Zitat von Alex_ITA01
folgendes Problem:
Ich habe eine Zeitdifferenz (natürlich auch von zwei Zeiten) im Format TDateTime.

An einem Beispiel erklärt:
Die erste Zeit: 12:03:24 (hh:mm:ss:)
Die zweite Zeit: 14:27:54 (hh:mm:ss:)

Zeitdifferenz: 02:24:30 (hh:mm:ss)


hallo, ehm könnte mier bitte einer erklären wie er das hin bekommen hat solch eine zeitdifferenz?
ich bekomme nur folgendes hin...

z.B.:

Zeit1 : 14:00:00
Zeit2 : 15:00:00
Differenz : 23:00:00

DeddyH 10. Aug 2008 13:53

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
Wie ermittelst Du denn die Differenz?

DP-Maintenance 10. Aug 2008 13:54

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

DeddyH 10. Aug 2008 13:59

Re: Zeitdifferenz "ordentlich" formatiert darstell
 
Zitat:

Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage
[OT] Nach fast 4 Jahren schon bemerkt? :lol: :duck: [/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.
Seite 1 von 4  1 23     Letzte »    

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