| |
Fortgeschrittene ProgrammierungUhrzeiten voneinander abziehen | | | Autor: Philipp | Datum: 09.12.16 11:01 |
| Guten Tag,
ich versuche Uhrzeiten voneinander abzuziehen.
Klappt soweit ganz gut.
Nur wenn die Uhrzeit unter 00:00 klappt es nicht.
Hier mein code
Dim tmp
Dim test
test = "02:00"
test1 = "04:00"
If Check1.Value = 1 Then
Text1.Text = Format$(Text1.Text, "HH:mm")
tmp = CDate(Text1.Text) - CDate(test1)
Text3.Text = CDate(tmp)
Text3.Text = Format$(Text3.Text, "HH:mm")
End If
If Check1.Value = 0 Then
Text1.Text = Format$(Text1.Text, "HH:mm")
tmp = CDate(Text1.Text) - CDate(test)
Text3.Text = CDate(tmp)
Text3.Text = Format$(Text3.Text, "HH:mm")
End If was mache ich da falsch ?
Vielen dank im voraus und Gruß | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Blackbox | Datum: 09.12.16 17:33 |
| Hallo,
1. Du solltest Variable des Typs: Date verwenden und nicht Variant.
2. Nimm einen kompletten DateTimeStamp in der Form: "dd.mm.yyyy hh:mm" am Beispiel:
DIM Test As Date
DIM Test1 As Date
Test = "02.02.2016 02:00"
Test1 = "02.02.2016 04:00"
Debug.Print Format(Test-Test1,"HH:MM")
Beitrag wurde zuletzt am 09.12.16 um 17:34:33 editiert. | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Philipp | Datum: 09.12.16 18:50 |
| Hallo Blackbox,
ich habe mal dein Beispiel ausprobiert.
Leider funktioniert dieses auch nicht wenn wenn die abgezogene Zeit größer ist als die Startzeit.
Bsp. 02:00 - 04:00 Ergebnis müsste sein 22:00 Uhr
Noch eine Idee ? | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Philipp | Datum: 10.12.16 13:02 |
| Hallo Dieter,
vielen Dank das klappt super.
Schönes Wochenende. | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Franki | Datum: 11.12.16 01:38 |
| Hallo,
na ja, das klappt nicht wirklich wenn du ohne Datum rechnest. Rauf oder runter, zwischen 02:00 Uhr und 04:00 Uhr liegen genau zwei Stunden, nicht mehr und nicht weniger wenn du nur Uhrzeiten ohne Datum hast.
Bei deiner Konstellation wie auch immer kannst du das zwar einbauen, aber ohne Datum kann auch dieses beispielhafte Intervall falsch sein wenn es um die Umstellung auf Sommerzeit geht oder zurück. Die liegt ja genau in deinem Beispielbereich.
Du tust dir sebst einen Gefallen wenn du bei Zeitberechnungen immer das Datum intern mitführst. Dann klappen auch die Berechnungsfunktionen wie DateDiff z.B. ganz zuverlässig.
Wenn das Datum für den User nicht sichtbar sein soll bei der Eingabe der Zeiten musst du halt anderweitig auf Plausibilität prüfen und dann das Datum zuordnen.
Ich beende jetzt meine Arbeit und arbeite um 04:00 Uhr weiter. Vielleicht in zwei Stunden, oder aber auch erst morgen um 04:00 Uhr...
Gruß
Frank | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Blackbox | Datum: 13.12.16 16:56 |
| Hallo,
stimmt doch mein Beispiel. In dem Fall ist es ja logisch, dass ein Tag unterschied ist.
Beispiel:
Sub Test()
Dim Test As Date
Dim Test1 As Date
Test = "02.02.2016 02:00"
Test1 = "01.02.2016 04:00"
MsgBox Format(Test - Test1, "HH:MM")
End Sub 04:00 zählt wieder bis 23:59:59, der nächste Tag beginnt mit 00:00 Uhr,
dann bis 02:00 Uhr im neuen Tag. Man braucht keine speziellen Funktionen,
nur den Typ: Date und VOR ALLEM DAS (oder ein) komplette(s) Datum für die
Berechnung. | |
Re: Uhrzeiten voneinander abziehen | | | Autor: Franki | Datum: 14.12.16 01:06 |
| Hallo,
du hast ja recht, ich predige ja auch immer, dass wenn mit Uhrzeiten gerechnet wird das Datum dazugehört. Dann ist das auch einfach.
Aber oft muss man Kunden klar machen, dass es keine offizielle Uhrzeit 24:00 Uhr gibt. (Egal welches Datum) Das wollen einige Leute eingeben und wundern sich, dass das nicht klappt.
Ein anderer Sonderfall bei Uhrzeitberechnungen ist der Tag an dem MEZ auf MESZ umgestellt wird und umgekehrt. Da muss man auch noch das Datum der Umstellung berücksichtigen und auch weitere Dinge abfragen bei der Eingabe.
Gruß
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|