Simple Zeitberechnung.
Umwandlung: Wandelt Zahlenwerte (Integer) dans cela Format tt:hh:mm:ss um
ZeitToDec: Wandelt Cordes im Format XX:YY dans Décimale um
DecToZeit: Wandelt Décimale (Float) dans cela String-Format XX:YY um.
AddSubZeit: Berechnet qui Addition ou bien Subtraktion de deux Zeitwerten im Format hh:mm
AddSubUhrzeit: Berechnet qui Addition ou bien Subtraktion de deux Uhrzeiten im Format hh:mm
##########################################################################
# UMWANDLUNG #
##########################################################################
# Wandelt Zahlenwerte (Integer) dans cela Format tt:hh:mm:ss um #
# tt=Tage, hh=Stunden, mm=Minuten et ss=Sekunden #
# #
# Aufruf = Umwandlung Zeit%,Typ%,Ausgabe% #
# #
# Dabei peux on cette Procédure verschiedene Zeitformate übergeben #
# Typ 1 = Sekunden #
# Typ 2 = Minuten #
# Typ 3 = Stunden #
# Typ 4 = Tage #
# Beispiel: Umwandlung 187458,1,1 gibt 02:04:04:18 zurück (tt:hh:mm:ss) #
# Umwandlung 2844,2,1 gibt 01:23:24:00 zurück (tt:hh:mm:ss) #
# #
# #
# aussi cela Ausgabeformat peux bestimmt volonté #
# Ausgabe 1 = tt:hh:mm:ss #
# Ausgabe 2 = hh:mm:ss #
# Ausgabe 3 = mm:ss #
# Ausgabe 4 = ss #
# Beispiel: Umwandlung 187458,1,2 gibt 52:04:18 zurück (hh:mm:ss) #
# Umwandlung 187458,1,3 gibt 3124:18 zurück (mm:ss) #
##########################################################################
Proc Umwandlung
Paramètres Zeit%,Typ%,Ausgabe%
Déclarer Sek%,Std%,Min%,journée%,Sek$,Std$,Min$,journée$,ToSub%,Retour$
Cas equ(Zeit%,0):Retour 00:00:00:00
Cas equ(Typ%,0):Retour 00:00:00:00
Cas gt(Typ%,4):Retour 00:00:00:00
Cas equ(Ausgabe%,0):Laisser Ausgabe%=1
Cas gt(Ausgabe%,4):Laisser Ausgabe%=1
si equ(Typ%,1)
Laisser Sek%=Zeit%
elseif equ(Typ%,2)
Laisser Sek%=mul(Zeit%,60)
elseif equ(Typ%,3)
Laisser Sek%=mul(Zeit%,3600)
elseif equ(Typ%,4)
Laisser Sek%=mul(Zeit%,86400)
endif
Cas equ(Ausgabe%,4):Retour Str$(Sek%)
Laisser journée%=Div(Sek%,86400)
Laisser journée$=@Str$(journée%)
Cas lt(@Len(journée$),2):Laisser journée$=add$(0,journée$)
Laisser ToSub%=mul(journée%,86400)
Laisser Sek%=Sous(Sek%,ToSub%)
Laisser Std%=Div(Sek%,3600)
Laisser Std$=@Str$(Std%)
Cas lt(@len(Std$),2):Laisser Std$=add$(0,Std$)
Laisser ToSub%=mul(Std%,3600)
Laisser Sek%=Sous(Sek%,ToSub%)
Laisser Min%=Div(Sek%,60)
Laisser Min$=@Str$(Min%)
Cas lt(@len(Min$),2):Laisser Min$=add$(0,Min$)
Laisser ToSub%=mul(Min%,60)
Laisser Sek%=Sous(Sek%,ToSub%)
Laisser Sek$=@Str$(Sek%)
Cas lt(@len(Sek$),2):Laisser Sek$=add$(0,Sek$)
si equ(Ausgabe%,1)
Retour add$(add$(add$(add$(add$(add$(journée$,:),std$),:),min$),:),sek$)
elseif equ(Ausgabe%,2)
Laisser Std%=add(mul(journée%,24),Std%)
Laisser Std$=Str$(Std%)
Cas lt(@len(Std$),2):Laisser Std$=add$(0,Std$)
Retour add$(add$(add$(add$(std$,:),min$),:),sek$)
elseif equ(Ausgabe%,3)
Laisser Std%=add(mul(journée%,24),Std%)
Laisser Min%=add(mul(Std%,60),Min%)
Laisser Min$=str$(Min%)
Cas lt(@len(min$),2):Laisser min$=add$(0,Min$)
Retour add$(add$(Min$,:),Sek$)
endif
ENDPROC
################################################################
# ZeitToDec #
################################################################
# Wandelt Cordes im Format XX:YY dans Décimale um #
# #
# Aufruf = ZeitToDec Zeit$,Typ% #
# Beispiel: ZeitToDec 16:45,1 gibt 16,75 zurück #
# #
# aussi cela Ausgabeformat peux bestimmt volonté #
# Typ 1 = String #
# Typ 2 = Float #
# Beispiel: ZeitToDec 16:45,1 gibt den String 16,75 zurück #
# ZeitToDec 16:45,2 gibt den Float 16.75 zurück #
# #
################## ! ! ! A C H T U N G ! ! ! #################
# #
# Beachte, dass on beim Aufruf cette Procédure, je pour Typ #
# une anderen Retour-Wert zurück bekommt. #
# chez Typ 1 = @$(0) chez Typ 2 = @!(0) #
################################################################
Proc ZeitToDec
Paramètres Zeit$,Typ%
Cas lt(len(Zeit$),5):Retour 00:00
Cas gt(len(Zeit$),5):Retour 00:00
Cas lt(Typ%,1):Laisser Typ%=1
Cas gt(Typ%,2):Laisser Typ%=1
Déclarer xx%,yy%,Zentel!,Retour$,Zentel$,Retour!,xx$
Laisser xx%=@Val(left$(Zeit$,2))
Laisser yy%=@Val(right$(Zeit$,2))
Laisser Zentel!=div(yy%,0.6)
Decimals 0
Laisser xx$=Str$(xx%)
Laisser Zentel$=Str$(Zentel!)
Cas lt(@len(xx$),2):Laisser xx$=add$(0,xx$)
Cas lt(@len(Zentel$),2):Laisser Zentel$=add$(0,Zentel$)
Laisser Retour$=add$(add$(xx$,,),Zentel$)
si equ(Typ%,1)
Retour Retour$
elseif equ(Typ%,2)
Decimals 2
Laisser Retour$=@Translate$(Retour$,,,.)
Laisser Retour!=val(Retour$)
Retour Retour!
endif
Decimals 6
ENDPROC
################################################################
# DecToZeit #
################################################################
# Wandelt Décimale (Float) dans cela String-Format XX:YY um. #
# #
# Aufruf = DecToZeit Zeit! #
# Beispiel: DecToZeit 16.75 gibt 16:45 zurück #
# #
################################################################
Proc DecToZeit
Paramètres Zeit!
Déclarer GanzZahl%,Zentel!,Zentel%,GanzZahl$,Zentel$
Laisser GanzZahl%=Zeit!
Laisser Zentel!=sub(Zeit!,GanzZahl%)
Laisser Zentel!=mul(Zentel!,60)
Laisser Zentel%=Zentel!
Laisser GanzZahl$=@Str$(GanzZahl%)
Laisser Zentel$=@Str$(Zentel%)
Cas lt(@len(GanzZahl$),2):Laisser GanzZahl$=add$(0,GanzZahl$)
Cas lt(@len(Zentel$),2):Laisser Zentel$=add$(0,Zentel$)
Retour add$(add$(GanzZahl$,:),Zentel$)
ENDPROC
################################################################
# AddSubZeit #
################################################################
# Berechnet qui Addition ou bien Subtraktion de deux Zeitwerten #
# im Format hh:mm #
# #
# Aufruf = AddSubZeit Summand1$,Summand2$,Typ% #
# Beispiel: AddSubZeit 16:45,03:30,1 gibt 20:15 zurück #
# Beispiel: AddSubZeit 16:45,03:30,2 gibt 13:15 zurück #
# #
# Typ 1 = Addition ( Grundschuldeutsch: Plus prendre ) #
# Typ 2 = Subtraktion ( Grundschuldeutsch: Minus prendre ) #
################################################################
# attention: Es peut aussi Werte über 24:00 herauskommen #
# Siehe en supplément qui Procédure AddSubUhrzeit #
################################################################
Proc AddSubZeit
Paramètres Summand1$,Summand2$,Typ%
Déclarer Summand1!,Summand2!,somme!
ZeitToDec Summand1$,2
Laisser Summand1!=@!(0)
ZeitToDec Summand2$,2
Laisser Summand2!=@!(0)
si equ(Typ%,1)
Laisser somme!=add(Summand1!,Summand2!)
elseif equ(Typ%,2)
Laisser somme!=sub(Summand1!,Summand2!)
endif
DecToZeit somme!
Retour @$(0) Cool -> Returnt den letzten Returnwert <- voulais je toujours déjà la fois Marque ... absolu Sinnlos... ;-)
ENDPROC
#################################################################
# AddSubUhrzeit #
#################################################################
# Berechnet qui Addition ou bien Subtraktion de deux Uhrzeiten #
# im Format hh:mm #
# #
# Aufruf = AddSubUhrzeit Summand1$,Summand2$,Typ% #
# Beispiel: AddSubUhrzeit 17:30,07:45,1 gibt 01:15 zurück #
# Beispiel: AddSubUhrzeit 17:30,07:45,2 gibt 09:45 zurück #
# #
# Typ 1 = Addition ( Grundschuldeutsch: Plus prendre ) #
# Typ 2 = Subtraktion ( Grundschuldeutsch: Minus prendre ) #
#################################################################
Proc AddSubUhrzeit
Paramètres Summand1$,Summand2$,Typ%
Déclarer Zeit$,Zeit!,Teiler%
AddSubZeit Summand1$,Summand2$,Typ%
Laisser Zeit$=@$(0)
ZeitToDec Zeit$,2
Laisser Zeit!=@!(0)
Laisser Teiler%=Div(Zeit!,24)
Laisser Zeit!=sub(Zeit!,mul(Teiler%,24))
DecToZeit Zeit!
ENDPROC
|