vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Uhrzeiten 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ß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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 ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Uhrzeiten voneinander abziehen 
Autor: ModeratorDieter (Moderator)
Datum: 10.12.16 09:56

Hier ein kleines Beispiel:
time1 As String
time2 As String
nMin As Long
 
time1 = "02:00"
time2 = "04:00"
' time2 in Minuten darstellen
nMin = Val(Left$(time2, 2)) * 60 + Val(Mid$(time2, 4))
 
' jetzt die Minuten von time1 abziehen
Debug.Print Format$(DateAdd("n", -nMin, time1), "hh:nn")

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Uhrzeiten voneinander abziehen 
Autor: Philipp
Datum: 10.12.16 13:02

Hallo Dieter,
vielen Dank das klappt super.
Schönes Wochenende.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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