Differenz zwischen zwei TDateTime in Stunden (war :DateTimePicker)
-
Hab ich das jetzt richtig verstanden? Wenn DatetImePicker1 größer ist als DateTimePicker2 soll die Differenz zwischen beiden berechnet werden und andersrum genauso?!
Also zum Beispiel:
DateTimePicker1 zeigt: 15:00:00
DateTimePicker2 zeigt: 16:00:00in dem Fall ist DateTimePicker2 größer als DateTimePicker1 und beim berechnen soll 01:00:00 rauskommen?
Anderer Fall:
DateTimePicker1 zeigt: 18:00:00
DateTimePicker2 zeigt: 16:00:00Hier ist nun DateTimePicker1 größer als DateTimePicker2 und es soll beim berechnen 02:00:00 rauskommen?
Wenn das so richtig is, dann brauchst du trotzdem die if und kannst dann berechnen:
if (dtp1->DateTime > dtp2->DateTime) ShowMessage(dtp1->DateTime - dtp2->DateTime) else ShowMessage(dtp2->DateTime - dtp1->DateTime)mfg, Micha!
-
Nein, tut mir leid. Habe mich vieleicht schlecht ausgedrückt.
DateTimePicker1 zeigt: 18:00:00
DateTimePicker2 zeigt: 16:00:00Das Ergebnis soll nich 2:00:00 sein sondern 22:00:00 Stunden.
Die If-Abfrage hatte ich schon.
-
Hallo
Bei BCB6 und höher sind zusätzliche Datumsfunktionen (DateUtils) dabei, dort ist bestimmt auch eine Funktion zum Berechnen von Zeitdifferenzen dabei.
Ansonsten nimm TDateTime::DecodeTime und berechne die Differenz manuell.bis bald
akari
-
Vielen Dank habe es direkt mal ausprobiert.
Leider kommt bei mir folgender Fehler wenn ich die Datumsfunktion benutzen will.Call to undefined function 'CompareTime'
Muss ich die Funktion noch irgentwie ein binden?
-
Siehe Hilfe
ganz oben bei Unit steht die einzubindende Datei
mfg, Micha!
-
Ja Super habe ich gemacht. Vielen Dank für Alles.
Hätte da noch eine Frage. Traue mich fast schon nicht mehr zu fragen, aber bin halt erst seit 3 Wochen am BCB programmieren und dem entsprechen habe ich noch kaum Ahnung.Ich versuche mit der Timer-Komponente ein Ereignis auszuführen sobald die aktuelle Uhrzeit zwichen der Uhrzeit von DateTimePicker1 und DateTimePicker2 ist soll das Ereignis ausgeführt werden.
Mein Ansatz war folgende, aber leider tut sich da nichts.if (DateTimePicker1->Time == Time())
{
Label3->Caption="online";
}
-
Hi,
if ((Time() >= DateTimePicker1->Time) && (Time() <= DateTimePicker2->Time)) //Anweisung
-
Das du die genaue Uhrzeit gerade erwischst wäre ein sehr großer Zufall. Probiers doch mal damit
if (DateTimePicker1->Time >= Time()) { Label3->Caption="online"; }[edit] ein wenig spät.
[edit]
-
Vielen Dank für eure zahlreichen Antworten.
Leider hat folgendes nicht funktioniert, warum weiss ich auch nicht.if ((Time() >= DateTimePicker1->Time) && (Time() <= DateTimePicker2->Time)) //AnweisungAber ich habe das dann mal mit Now() versucht
if ((Now() >= DateTimePicker1->Time) && (Now() <= DateTimePicker2->Time)) //Anweisungund sehe da es funktioniert.
-

Now() hat folgendes Format: 01.01.2000 15:00:00
Und Time(): 15:00:00Hast du als Kind (Eigenschaft vom TDateTimePicker) dtkDate oder dtkTime eingestellt? Die Variante mit Now() kann nur Funktionieren wenn dort dtkDate eingestellt ist. Das wäre aber widersprüchlich zu deiner Aussage das TDateTimePicker1: 18:00:00 zeigt.

//sorry Fehlinfo .. auch bei eingestelltem dtkTime zeigt TDateTimePicker Datum+Uhrzeit ... also wie Akari weiter unten (:D) schon schreibt, wirst du wohl aufsplitten müssen ...
-
Hallo
Das Problem ist einfach das in TDateTime nicht nur die Tageszeit an sich, sondern auch das Datem mit drin steckt. Du müßtest also entweder dafür sorgen das die TDateTimePicker bereits auf genau auf das gleiche Datum eingestellt sind, oder du extrahierst wie ich schon geschrieben habe die reinen Zeitwerte aus den TDateTimes und rechnest und vergleichst "manuell".
bis bald
akari