Announcement

Collapse
No announcement yet.

Differenz zwischen zwei Uhrzeiten berechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Differenz zwischen zwei Uhrzeiten berechnen

    Hi, ich muss für meine Arbeitszeitverwaltung mit Uhrzeiten rechnen und hänge irgendwie fest. Bei Werten über die 0 Uhr - Grenze werden einfach die Stunden 'verschluckt' ! zb. 01.01.2001 22.00 Uhr - 04.02.2001 5.00 Uhr ergibt nur Nonsens -> 5 ????? Für jeden Rat bin ich sehr dankbar !!

  • #2
    Hallo Susi,

    da Tage im ganzzahligen und Zeiten im gebrochener Teil einer Realzahl gespeichert sind und negative Zeiten natürlich Nonsens sind führt die einfache Subtraktion bei Überschreiten der 0 Uhr-Grenze zu Müll. Wenn Du also die Tagesgrenzen überschreitest mußt Du Tage und Zeit getrennt behandeln:

    var<br>
    Zeit: TDateTime;<br>
    Tage: TDateTime;<br>
    <br>
    begin<br>
    Zeit := Frac(EndZeit) - Frac(AnfangsZeit);<br>
    if Zeit < 0 then Zeit := Zeit + 1;<br>
    Tage := Trunc(EndZeit - AnfangsZeit);<br>
    end;<br>
    <br>
    in Zeit steht anschließend die Zeit in Stunden (im Zeitformat) und in Tage die Anzahl an Tagen zwischen Anfangs- und EndZeit.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hi Susi,

      bei Datums- und Zeitwerten (TDateTime) werden die Anzahl der Tage im ganzzahligen und die Zeit im gebrochenen Teil einer Realzahl gespeichert. Die Subtraktion von 01.01.2001 22:00 und 04.02.2001 05:00 ergibt also ganz korrekt 33,291666667 - das entspricht also 33 Tagen und 7 Stunden (TimeToStr(Frac(33.291666667)).

      Gruß Fal
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Ein Hallo an alle Delphianer !! <br> Hi Falk, erst einmal danke für die schnelle Antwort !! Leider habe ich von DEINEN Ausführungen nicht viel verstanden. Ich müsste die gesamte Zeitdifferenz in Stunden:Minuten bekommen. <br><b>Danke und schöenen Tag noch.<b&gt

        Comment


        • #5
          Hi

          Das bekommst Du doch auch !? z.b 33 Tage + den bruchteil eines Tages. Nun, wieviele Stunden hat ein Tag ?

          <pre>

          var
          D: TdateTime;
          begin
          D := StopDateTime - StartDateTime;

          Stunden := D * 24;
          Minuten := D * 24 * 60;
          Sekunden := D * 24 * 60 * 60;

          Stunden:Minten := Trunc(D * 24) : Round(Frac(D * 24) * 60);
          end;

          <pre>

          wie Du sehen kannst, wird mit TDateTime einfach gerechnet, eingacher gehts garnicht mehr

          Gruß Hage

          Comment


          • #6
            Ein Hallo an alle 'Delphifreaks' !! <br> Alle Achtung das die Beantwortung meiner Frage so schnell ging. Ich bin mit meinem Programm jetzt schon ein ganzes Stück weiter. <br>Vielen Dank nochmals ... ;-

            Comment

            Working...
            X