Uhrzeiten addieren



  • Ich habe jetzt folgendes gemacht:

    TTime Arbeitsbeginn = MaskEdit1->Text;
    TTime Arbeitsende = MaskEdit2->Text;
    
    TTime Differenz = Arbeitsende-Arbeitsbeginn;
    
    MaskEdit3->Text=Differenz;  //gesamte Arbeitszeit
    
    TTime Pause = MaskEdit7->Text;
    
    MaskEdit4->Text = Differenz- Pause;   //gesamte Arbeitszeit - Pause 30 Minuten
    

    Das funktioniert soweit, nur dass die 30 Minuten auf 60 Minuten gerundet werden.



  • So funktioniert es erstmal mit TEdit:

    TDateTime Arbeitsbeginn = MaskEdit1->Text;
    TDateTime Arbeitsende = MaskEdit2->Text;
    TDateTime Arbeitsstunden = MaskEdit6->Text;

    Edit1->Text= Arbeitsende-Arbeitsbeginn;
    Edit2->Text= Arbeitsende-Arbeitsbeginn-Arbeitsstunden;



  • Hallo,
    leider kennt man kleines Programm den Befehl "HoursBetween" nicht.
    Weiß Jemand, welche Datei ich mit include ( include ???.h)hinzufügen muss?

    TTime time1, time2;

    time1 = Time();
    time2 = Time();

    edTime1->Text = TimeToStr(time1);
    edTime2->Text = TimeToStr(time2);

    Memo1->Lines->Add("Hours between: " + FloatToStr(HoursBetween(time1, time2)));



  • @alk
    <System.DateUtils.hpp> inkludieren. Steht auch in der Hilfe.



  • Welche RAD Studio Version hast du denn?



  • Ich benutze die kostenlose Version, ich meine 11.1, kann ich von hier jetzt schlecht sagen.

    -> C++Builder Community Edition



  • Ich dachte, vllt. hast du noch eine ganz alte Version vom RAD Studio (bzw C++ Builder).

    Klappt es denn mit der Antwort von @DocShoe?



  • Kann erst heute Abend sagen....



  • Ich benutze die Version: Embarcadero® C++Builder 10.4

    Mit der <System.DateUtils.hpp> funktioniert es soweit, nur für eine Zeit von 06:00 bis 00:00 Uhr errechnet die Funktion 6 Stunden, müssen natürlich 18 Stunden sein.



  • 0:00h meint die Uhrzeit des selben Tages wie 6:00h, also ist die Differenz 6 Stunden.

    HoursBetween:

    HoursBetween gibt immer ein positives Ergebnis zurück und daher sind die Parameterwerte austauschbar.

    Wenn du 0:00h des nächsten Tages haben möchtest, dann mußt du TDateTime verwenden (und unterschiedliche Datumswerte angeben).



  • Kannste dir aber auch selber bauen:

    double HoursBetween( TDateTime dt1, TDateTime dt2 )
    {
       double const diff = dt1 > dt2 ? dt1.dVal - dt2.dVal : dt2.dVal - dt1.dVal;
       return diff * 24;
    }
    


  • Ich habe mir auch sowas in dieser Richtung gedacht, konnte aber noch nicht viel machen, ich habe gerade wenig Zeit.


Log in to reply