German DateTime - 2 Daten abziehen und differenz in Jahren, Tagen, Stunden, Minuten.

RiverRaid

Active Member
Licensed User
Hallo!

Vielleicht eine blöde Frage, aber ich komme seit 2 Tagen nicht weiter...

ich benutze die Dialogs-Library um ein Datum und ein Uhrzeit-Dialogfenster abzufragen. Die Variablen sind als Long deklariert:
B4X:
ret = td.Show("Bitte geben Sie die Uhrzeit an", "Uhrzeit eingeben", "Ok", "", "", Null)
Uhrzeit = td.TimeTicks
    ret = Dd.Show("Bitte geben Sie das Datum an", "Datum eingeben", "OK", "", "",  Null )
    ErsterTag = Dd.DateTicks

Also gebe ich zB den 30.11.1999 um 18:32 ein.

Jetzt möchte ich die Differenz zwischen dem eingebenenen Datum und Uhrzeit und "Jetzt" in Jahren, Tagen Stunden und Minuten errechnen.

Mit
B4X:
Dim Tage As Double
Tage =  (DateTime.Now - ErsterTag ) / DateTime.TicksPerDay
bekomme ich schon die Tage raus. Aber weiter komme ich leider nicht. ich weiß nicht, wie ich die Uhrzeit in das ganze einbeziehen soll, dass am Ende rauskommt: Zwischen heute und Damals liegen 13 Jahre, 12 Stunden und 34 Minuten...

Danke für eure hilfe!

LG,
Andi
 

RiverRaid

Active Member
Licensed User
Habe jetzt ein wenig herumgespielt.. es ist nicht 100%ig richtig (Monate sind gerundent) aber vielleicht kanns wer brauchen:

B4X:
Sub ErrechneZeit(date1 As String,Time1 As String)
Dim Ergebnis As String 
Dim AltesDatum, NeuesDatum, Vergangen As Long 

AltesDatum = DateTime.DateParse(date1) + (DateTime.TimeParse(Time1) Mod DateTime.TicksPerDay)
  AltesDatum = AltesDatum + (DateTime.TimeZoneOffset * DateTime.TicksPerHour)

NeuesDatum =  DateTime.Now 
Vergangen = NeuesDatum - AltesDatum

Dim Jahre, Monate, Wochen, Tage, Stunden, Minuten As Long

Jahre = Vergangen / (DateTime.TicksPerDay * 365)
Vergangen = Vergangen - (Jahre * DateTime.TicksPerDay * 365)
Monate = Vergangen / (DateTime.TicksPerDay * 30)
Vergangen = Vergangen - (Monate * DateTime.TicksPerDay * 30)
Wochen = Vergangen / (DateTime.TicksPerDay * 7)
Vergangen = Vergangen - (Wochen * DateTime.TicksPerDay * 7)
Tage = Vergangen / DateTime.TicksPerDay
Vergangen = Vergangen - (Tage * DateTime.TicksPerDay)
Stunden = Vergangen / DateTime.TicksPerHour
Vergangen = Vergangen - (Stunden * DateTime.TicksPerhour)
Minuten = Vergangen / DateTime.TicksPerMinute
If Jahre > 0 Then
    If Jahre = 1 Then 
        Ergebnis= Ergebnis & Jahre & " Jahr, "
    Else
        Ergebnis= Ergebnis & Jahre & " Jahren, "
    End If
End If

If Monate > 0 Then
If Monate = 1 Then 
Ergebnis= Ergebnis & Monate & " Monat, "
Else
Ergebnis= Ergebnis & Monate & " Monaten, "
End If
End If
If Wochen > 0 Then
If Wochen = 1 Then 
Ergebnis= Ergebnis & Wochen & " Woche, "
Else
Ergebnis= Ergebnis & Wochen & " Wochen, "
End If
End If
If Tage > 0 Then
If Tage = 1 Then 
Ergebnis= Ergebnis & Tage & " Tag, "
Else
Ergebnis= Ergebnis & Tage & " Tagen, "
End If
End If
If Stunden > 0 Then
If Stunden = 1 Then 
Ergebnis= Ergebnis & Stunden & " Stunde und "
Else
Ergebnis= Ergebnis & Stunden & " Stunden und "
End If
End If
If Minuten > 0 Then
If Minuten = 1 Then 
Ergebnis= Ergebnis & Minuten & " Minute!" & CRLF
Else
Ergebnis= Ergebnis & Minuten & " Minuten!" & CRLF
End If
End If

Return Ergebnis
End Sub

Lg
 
Top