'Rechnet eine Zeitdauer als String in eine Dezimalzahl um
'Beispiele:
'DezimalStunden("8:45", 3) ergibt 8.75
'DezimalStunden("8:47", 3) ergibt 8.783
'DezimalStellen = -1 ohne Abrundung
'DezimalStunden("8:47", -1) ergibt 8.783333333333333
Sub DezimalStunden(Zeit As String, DezimalStellen As Int) As Double
Dim st(2) As String
Dim s, m , d As Double
st = Regex.Split(":", Zeit) ' zerteilt den String in Stunden und Minuten
s = st(0) ' Stunden als Zahl
m = st(1) ' Minuten als Zahl
d = s + m / 60 ' Dezimaldauer
If DezimalStellen = -1 Then
Return d ' gibt die Dauer mit allen Dezimalstellen zurueck
Else
Return Round2(d, DezimalStellen) ' abrunden auf DezimalStellen
End If
End Sub
Mit dieser Routine könnt Ihr ein Zeitdauer in Dezimalstunden umrechenen.
Beste Grüsse.B4X:'Rechnet eine Zeitdauer als String in eine Dezimalzahl um 'Beispiele: 'DezimalStunden("8:45", 3) ergibt 8.75 'DezimalStunden("8:47", 3) ergibt 8.783 'DezimalStellen = -1 ohne Abrundung 'DezimalStunden("8:47", -1) ergibt 8.783333333333333 Sub DezimalStunden(Zeit As String, DezimalStellen As Int) As Double Dim st(2) As String Dim s, m , d As Double st = Regex.Split(":", Zeit) ' zerteilt den String in Stunden und Minuten s = st(0) ' Stunden als Zahl m = st(1) ' Minuten als Zahl d = s + m / 60 ' Dezimaldauer If DezimalStellen = -1 Then Return d ' gibt die Dauer mit allen Dezimalstellen zurueck Else Return Round2(d, DezimalStellen) ' abrunden auf DezimalStellen End If End Sub
Ist diene Summe eine String Variable ?( Möchte ich nur die summe (stunden) auf dezimal umrechnen.
'Rechnet eine Zeitdauer zwischen zwei Zeiten mit einer Pause
'Wenn die Endzeit kleiner als die Beginnzeit ist
'wird als End Datum der naechste Tag angenommen
Sub ZeitdauerRechnen As String
Dim Beginn, Ende, Pause, Dauer, TicksHeute As Long
TicksHeute = DateTime.DateParse(DateTime.Date(DateTime.Now))
Beginn = DateTime.TimeParse(edtBeginn.text)
Ende = DateTime.TimeParse(edtEnde.text)
If Ende < Beginn Then
Ende = Ende + DateTime.TicksPerDay
End If
Pause = DateTime.TimeParse(edtPause.text) - TicksHeute
Dauer = (Ende - Beginn - Pause) + TicksHeute
Return DateTime.Time(Dauer)
End Sub
Sub btnAddNew_Click
edtinfo.text = ZeitdauerRechnen
If RecordExists = False Then
Was meinst Du mit Open Source Code?Ohne änderungen am Open Source Code
Du kannst ja mal Deine letzte Version schicken und Ich schau mal rein was man verbessern kann.
Beste Grüsse.
Wenn Ich das letzte Programm von superscope habe werde Ich reinschauen.
Das Problem was Ich vorläufig sehe ist die Speicherung der Zeitendauern als String.
Es währe bestimmt vorteilhafter die Werte als Zahlen zu speichern und dann direct die Summe mit einer SQL Query aus der Datenbank zu holen.
Beste Grüsse.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?