German Date.Time

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich brauche mal wieder eure Hilfe!
Ich möchte gerne die Differenzzeit in Stunden, Minuten, Sekunden erfassen.

Beispiel:
Vom 01.08.2017 08:45:37 Bis zum 06.08.2017 04:36:12
Ergebniss = in Stunden, Minuten, Sekunden

Wer kann mir helfen?
 

An Schi

Well-Known Member
Licensed User
Bin am Handy, deswegen leider keine Details von mir...
Schau dir mal DateUtils und Period im speziellen an ;)
 

Wolli013

Well-Known Member
Licensed User
Longtime User
Ich habe es ja soweit das es für ein normalen tag reicht nur wenn die Zeitberechnung länger als ein Tag ist dann bekomme ich Minus ergebnisse.
Deswegen muss ich das Datum auch mit einbauen, ich wei im moment nur nicht wie.
Hier mein Code wie es ohne Probleme bis 24:00 Uhr läuft.

B4X:
'Von Uhrzeit
Dim von As Int = DateTime.TimeParse(UebergabeStartZeit)
'Bis Uhrzeit
Dim bis As Int = DateTime.TimeParse(DateTime.Time(DateTime.now))
'Ergebniss 
Dim zeit As Period = DateUtils.PeriodBetween(von,bis)
UebergabeSollzeit = NumberFormat(zeit.Hours, 2, 0) &":"& NumberFormat(zeit.Minutes, 2, 0) &":"& NumberFormat(zeit.Seconds, 2, 0)
 

An Schi

Well-Known Member
Licensed User
Hab mich doch schnell hingesetzt, dachte wenn ich auch mal was kann ;):D
Hab jetzt deinen neuen Code nicht angeschaut, bei mir gehts so:

B4X:
Private p As Period
Private t1 As Long
Private t2 As Long
 
DateTime.DateFormat =   "dd.MM.yyyy"
DateTime.TimeFormat =   "HH:mm:ss"
     
t1 = DateTime.DateTimeParse("01.08.2017", "08:45:37")
t2 = DateTime.DateTimeParse("06.08.2017", "04:36:12")
 
p = DateUtils.PeriodBetween(t1, t2)

Log("Tage: " & p.Days & " - Stunden: " & p.Hours & " - Minuten: " & p.Minutes & " - Sekunden: " & p.Seconds)

Log: Tage: 4 - Stunden: 19 - Minuten: 50 - Sekunden: 35
 

klaus

Expert
Licensed User
Longtime User
Das liegt wahrscheinlich in diesen beiden Zeilen:
Dim von As Int = DateTime.TimeParse(UebergabeStartZeit)
Dim bis As Int = DateTime.TimeParse(DateTime.Time(DateTime.now))

Zeit-Ticks sind Long Variablen une keine Int?
Also:
Dim von As Long = DateTime.TimeParse(UebergabeStartZeit)
Dim bis As Long = DateTime.TimeParse(DateTime.Time(DateTime.now))
 

DonManfred

Expert
Licensed User
Longtime User
Hab jetzt deinen neuen Code nicht angeschaut, bei mir gehts so
Da du für Start und Endzeit korrekt Datum und Uhrzeit in einem Wert speicherst (DateTime.DateTimeParse) klappt es dann auch mit der der Periode der Nachbarin , Aeh... mit
PeriodBetween :D
 

Wolli013

Well-Known Member
Licensed User
Longtime User
So läuft es jetzt bei mir Super!
Bei Tagesüberschneidung werden dann die Tage mal 24 Stunden dazu gerechnet.
B4X:
'Von Uhrzeit
Dim von As Long = DateTime.DateTimeParse( UebergabeTagesdatum, UebergabeStartZeit)
'Bis Uhrzeit
Dim bis As Long = DateTime.Now
'Ergebniss 
Dim zeit As Period = DateUtils.PeriodBetween(von,bis)
'Übergabe
UebergabeSollzeit = NumberFormat(zeit.Days*24 + zeit.Hours, 2, 0) &":"& NumberFormat(zeit.Minutes, 2, 0) &":"& NumberFormat(zeit.Seconds, 2, 0)
 
Top