VB6.0 Datums und Zeitdifferenzen

Hallo,
ich möchte die Differenz in hh:mm:ss zwischen zwei DatumsZeitwerten berechnen.

datum1=#07/06/2001 10:00:00#

datum2=#07/08/2001 08:00:10#

differenz = datum2 - datum1

Wie mache ich das am besten.

Ich habe es schon mit datediff versucht, aber ich erhalte nur dann sinnvolle Werte wenn ich das Intervall auf Sekunde stelle. Dann bekomme ich die Differenz in Sekunden und muß sie von Hand umrechnen. Geht das auch anderst?

MFG Christian

Hallo Christian,
der folgende Code errechnet, bezogen auf das Tagesdatum, bis zum 10. eines Monats ein 7 Monate, ab 11. eines Monats ein 8 Monate in der Zukunft liegendes Datum:

Datum = Date
Monat = Month(Date)
Tag = Day(Date)
If Day(Tag) > 10 Then
Datum = Date + 240
Else
Datum = Date + 210
End If
If Month(Datum) = 4 Or Month(Datum) = 6 Or Month(Datum) = 9 Or Month(Datum) = 11 Then Datum = „30“ & „.“ & Month(Datum) & „.“ & Year(Datum)
If Month(Datum) = 1 Or Month(Datum) = 3 Or Month(Datum) = 5 Or Month(Datum) = 7 Or Month(Datum) = 8 Or Month(Datum) = 10 Or Month(Datum) = 12 Then Datum = „31“ & „.“ & Month(Datum) & „.“ & Year(Datum)
If Month(Datum) = 2 Then Datum = „28“ & „.“ & Month(Datum) & „.“ & Year(Datum)
Selection.GoTo What:=wdGoToBookmark, Name:=„Datum1“
Selection.TypeText Datum
Möglicherweise kommst Du mit dem Ansatz irgendwie weiter.

Gruß
Wilhelm

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Wilhelm,
danke für die Hilfe, ich komme damit aber nicht an mein Ziel. Ich muß die Differenz von zwei vorgegebenen Zeitpunkten berechnen, auch wenn die Zeitpunkte in unterschiedlichen Tagen liegen.
z.B Die Zeit in Stunden, Minuten und Sekunden von 10:00:00 Uhr am Montag bis um 14:00:10 Uhr am Dienstag.

Christian

Hallo Christian,
der folgende Code errechnet, bezogen auf das Tagesdatum, bis
zum 10. eines Monats ein 7 Monate, ab 11. eines Monats ein 8
Monate in der Zukunft liegendes Datum:

Datum = Date
Monat = Month(Date)
Tag = Day(Date)
If Day(Tag) > 10 Then
Datum = Date + 240
Else
Datum = Date + 210
End If
If Month(Datum) = 4 Or Month(Datum) = 6 Or
Month(Datum) = 9 Or Month(Datum) = 11 Then Datum = „30“ & „.“
& Month(Datum) & „.“ & Year(Datum)
If Month(Datum) = 1 Or Month(Datum) = 3 Or
Month(Datum) = 5 Or Month(Datum) = 7 Or Month(Datum) = 8 Or
Month(Datum) = 10 Or Month(Datum) = 12 Then Datum = „31“ & „.“
& Month(Datum) & „.“ & Year(Datum)
If Month(Datum) = 2 Then Datum = „28“ & „.“ &
Month(Datum) & „.“ & Year(Datum)
Selection.GoTo What:=wdGoToBookmark,
Name:=„Datum1“
Selection.TypeText Datum
Möglicherweise kommst Du mit dem Ansatz irgendwie weiter.

Gruß
Wilhelm

Ich habe es schon mit datediff versucht, aber ich erhalte nur
dann sinnvolle Werte wenn ich das Intervall auf Sekunde
stelle. Dann bekomme ich die Differenz in Sekunden und muß sie
von Hand umrechnen. Geht das auch anderst?

Datumswerte werden intern auch nur als Fliesskommazahl dargestellt, nämlich:

  • Zahlen vor dem Komma: Tage nach 01.01.1900 (eventuell negativ)
  • Kommastellen: Teil des Tages
  • zB.
    Now: 06.07.2001 11:32:05
    Csng(Now): 37078,48

Wenn du also die Differenz in Sekunden hast musst du das gar nicht richtig von Hand umrechnen: da ein Tag 86400 Sekunden hat musst du einfach deine Sekunden durch 86400 dividieren und schon erhält du das ganze in Tagen (mit Kommastellen).
Mit CDate und Format kannst du die dann einfach formatieren; fürs interne Rechnen empfehle ich sowieso bei Sekunden zu bleiben…

~luki

Ein gebastel aber es geht :smile:)
hallo

wie findest du diese Lösung:

Sub gifasdatefunction()
Dim datum1 As Date
Dim datum2 As Date
Dim m_lngDays As Long
Dim m_sngTime As Single
Dim m_lngNurStunden As Long

datum1 = #7/6/2001 10:00:00 AM#
datum2 = #7/7/2001 11:00:10 AM#

m_lngDays = Fix((datum2 - datum1))

m_sngTime = datum2 - datum1 - m_lngDays

m_lngNurStunden = Format(m_sngTime, „hh“)

MsgBox m_lngNurStunden + m_lngDays * 24 & Mid(Format(m_sngTime, „hh:mm:ss“), 3)

End Sub

gruss, Giuseppe