Was möchtest Du denn genau...
Wenn Du nur die Zeit im Format "0:00:00" angezeigt haben möchtest, geht das mit
Code: Alles auswählen
FormatDate("%hh:%ii:%ss",Date()) ;Anzeigebsp. 06:58:12
FormatDate("%h:%ii:%ss",Date()) ;Anzeigebsp. 6:58:12
Irretiert hat mich am Anfang der Platzhalter "%ii", welcher für die Minuten steht, da
"%mm" schon als Platzhalter für die Monate verwendet wird.
Möchtest Du jedoch eine analoge Zeitanzeige in das dezimale Format umwandeln, wie es z.B.
bei den meisten Zeiterfassungssystemen in Betrieben verwendet wird, dann wird das ganze
soweit ich weis etwas komplizierter.
Ich gehe dann den Weg, das ich erst einmal die Differenz der Zeiten mit folgender Procedure
von "crossroads" (*dank*) in Sekunden errechne...
Code: Alles auswählen
Procedure.l PBDateDiff (modus$, Datum1$, Datum2$)
d1.l = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", Datum1$)
d2.l = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", Datum2$)
If d1 < 0 Or d2 < 0:ProcedureReturn -1:EndIf ; error!
diff.l = Abs(d2 - d1)
Select modus$
Case "s":ProcedureReturn diff ; seconds
Case "m":ProcedureReturn Int(diff / 60) ; minutes
Case "h":ProcedureReturn Int(diff / (60 * 60)) ; hours
Case "d":ProcedureReturn Int(diff / (60 * 60 * 24)) ; days
Case "w":ProcedureReturn Int(diff / (60 * 60 * 24 * 7)) ; weeks
Default:ProcedureReturn -1 ; error!
EndSelect
EndProcedure
Wenn Du nun hingehst und das Ergebnis in volle Stunden und Minuten zurückrechnest, bist Du am Ziel.
Beispiel:
Code: Alles auswählen
startzeit$="13:12:25"
endzeit$="17:02:25"
vergangeneSekunden=PBDateDiff("s", startzeit$, endzeit$)
stunden=Int(vergangeneSekunden/3600): vergangeneSekunden-(stunden*3600)
minuten=Int(vergangeneSekunden/60): vergangeneSekunden-(minuten*60)
sekunden=vergangeneSekunden
;Variante1
ausgabe$=Right("00"+Str(stunden),2)+"."+Right("00"+Str(minuten),2)+":"+Right("00"+Str(sekunden),2)
;Variante2
ausgabe$=Right("00"+Str(stunden),2)+"."+Right("00"+Str(minuten),2)
;ERGEBIS1 = "3.50:00"
;ERGEBIS2 = "3.50"
Wenn Du die Ausgeb im dezimalen Format... (00:15:00 = 0.25 Std) haben möchtest, mußt Du
natürlich noch hingehen in die werte mit (wert/60)*100 umrechnen.
Ich hoffe, ich konnte Dir helfen und habe nicht zuviele Fehler, da ich selber noch
Anfänger bin
