Rechnung/Formel von Arbeitszeiten
Rechnung/Formel von Arbeitszeiten
Hallo Leute,
bin zwar länger nicht mehr da gewesen, habe aber nun ne Frage.
Programmiere gerade ein Tool das Arbeitszeiten berechnen soll.
Hierbei verwende ich folgendes Bild:
Beginn | Ende
Wobei Beginn 1330 für 13:30 steht und Ende 2200 für 22:00.
Nun weiß ich nicht wie ich 1330 bis zu 2200 rechnen lassen kann?
Hab schon folgendes versucht:
a = 1330
b = 2200
c = a+b (Ist aber falsch, ergibt nämlich 3530 also demnach hätte man 35,30 geabreitet)
Weiteres funktioniert ebenfalls nicht:
a = 1330
b = 2200
c = b-a (Ergibt wieder falsche Arbeitszeit von diesesmal 870 also 8,70)
Hat da jemand nen Gedankensblitz oder sowas?
Danke schonmal
bin zwar länger nicht mehr da gewesen, habe aber nun ne Frage.
Programmiere gerade ein Tool das Arbeitszeiten berechnen soll.
Hierbei verwende ich folgendes Bild:
Beginn | Ende
Wobei Beginn 1330 für 13:30 steht und Ende 2200 für 22:00.
Nun weiß ich nicht wie ich 1330 bis zu 2200 rechnen lassen kann?
Hab schon folgendes versucht:
a = 1330
b = 2200
c = a+b (Ist aber falsch, ergibt nämlich 3530 also demnach hätte man 35,30 geabreitet)
Weiteres funktioniert ebenfalls nicht:
a = 1330
b = 2200
c = b-a (Ergibt wieder falsche Arbeitszeit von diesesmal 870 also 8,70)
Hat da jemand nen Gedankensblitz oder sowas?
Danke schonmal
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Lol soll das ein Witz sein? Wenn du mit Zeiten im Deziamlsystem rechnest musst du die Zeit Vorher auch ins Dezimalsystem Umrechnen...
a -> 13:30 -> 1350
b -> 22:00 -> 2200
c = b-a -> 2200-1350 = 850
c -> 850 -> 8:30 Stimmt
du musst die Minuten durch 60 Teilen und mal 100 nehmen und andersrum um das korrekt umzurechnen...
Ich würde ohnehin mit Timestamps in Sekunden rechnen weil man dann die Date-Funktionen einfach benutzen kann...
PS: Das ganze hätte ich mal ganz dezent ins Anfängerforum gepostet^^ (Is würde sagen Mathematik 2. oder 3. Klasse xD)
a -> 13:30 -> 1350
b -> 22:00 -> 2200
c = b-a -> 2200-1350 = 850
c -> 850 -> 8:30 Stimmt
du musst die Minuten durch 60 Teilen und mal 100 nehmen und andersrum um das korrekt umzurechnen...
Ich würde ohnehin mit Timestamps in Sekunden rechnen weil man dann die Date-Funktionen einfach benutzen kann...
PS: Das ganze hätte ich mal ganz dezent ins Anfängerforum gepostet^^ (Is würde sagen Mathematik 2. oder 3. Klasse xD)
Zuletzt geändert von KeyKon am 17.03.2009 16:09, insgesamt 1-mal geändert.
(\/) (°,,,°) (\/)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
du musst natürlich die Minuten gesondert betrachten.
am einfachsten wäre es, wenn du die Stundenbruchteile gleich in Hundertsteln notierst,
13:30h wäre also 1350, 19:45h wäre 1975, 16:15h wäre 1625, usw.
die mögliche Auflösung dabei beträgt drei minuten: alle drei minuten wächst der Hundertstel-Zähler um 05
am einfachsten wäre es, wenn du die Stundenbruchteile gleich in Hundertsteln notierst,
13:30h wäre also 1350, 19:45h wäre 1975, 16:15h wäre 1625, usw.
die mögliche Auflösung dabei beträgt drei minuten: alle drei minuten wächst der Hundertstel-Zähler um 05
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
ich weiß das das Grundschule ist aber ich bin da schon länger raus und suche nur noch ne Formel, doch irgendwie funktioniert das nicht.
@KeyKon:
Das funktioniert so nicht da ich Minutengenau rechnen möchte also keine Sekundenangaben brauche.
Hm, ich würde das auch gerne in einer Industriezeitrechnung also Dezimal rechnen aber es funktioniert nicht.
Hier ist mein Code, vielleicht fällt euch noch was dazu ein:
@KeyKon:
Das funktioniert so nicht da ich Minutengenau rechnen möchte also keine Sekundenangaben brauche.
Hm, ich würde das auch gerne in einer Industriezeitrechnung also Dezimal rechnen aber es funktioniert nicht.
Hier ist mein Code, vielleicht fällt euch noch was dazu ein:
Code: Alles auswählen
a$ = GetGadgetText(#Jan09_1Start)
b$ = GetGadgetText(#Jan09_1Finish)
a = Val(a$)
b = Val(b$)
c = b/60*100-a/60*100
d$ = Str(c)
SetGadgetText(#PresenceFieldOne,d$)
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Junge! Du darfst natürlich nur die Minuten /60*100 nehmen! Und danach musst du das wieder rückgängig machen...
Im übrigen machts ja wohl keinen Unterschied ob du Minuten Sekunden oder Nanosekundengenau rechnest wenn die beiden Werte mit denen du rechnest eh Minutengenau sind...
EDIT:
Was spricht dagegn es so zu machen?
Im übrigen machts ja wohl keinen Unterschied ob du Minuten Sekunden oder Nanosekundengenau rechnest wenn die beiden Werte mit denen du rechnest eh Minutengenau sind...
EDIT:
Was spricht dagegn es so zu machen?
Code: Alles auswählen
Procedure StrToTime(str$)
ProcedureReturn ParseDate("%hh%ii",RSet(str$,4,"0"))
EndProcedure
Procedure.s TimeToStr(time)
ProcedureReturn Str(Val(FormatDate("%hh%ii",time)))
EndProcedure
a$ = "1330"
b$ = "2200"
Debug TimeToStr(StrToTime(b$)-StrToTime(a$))
Zuletzt geändert von KeyKon am 17.03.2009 17:49, insgesamt 1-mal geändert.
(\/) (°,,,°) (\/)
@KeyKon:
Ersten, bleib mal höfflich und nenn mich nicht Junge!
Zweitens, ich will NICHT in Sekunden rechnen, also auch nicht in Sekunden, Milisekunden oder Nanosekunden.
Würde das gern so machen wie Kaeru Gaman, also 1330 - 2200 -> 8.5 usw.
Ersten, bleib mal höfflich und nenn mich nicht Junge!
Zweitens, ich will NICHT in Sekunden rechnen, also auch nicht in Sekunden, Milisekunden oder Nanosekunden.
Würde das gern so machen wie Kaeru Gaman, also 1330 - 2200 -> 8.5 usw.
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Dann rechnen Sie doch auch so, auch wenn der Aufwand bei gleichem Ergebnis größer ist, oben hab ich noch einen Code so wie ich ihn nutzen würde Editiert, nur falls Ihnen das noch nicht aufgefallen hat.
Entschuldigen Sie bitte das ich Sie vorhin etwas unwirsch angefahren habe, aber das schien mir aufgrund der Tatsache das Kaeru bereits schrieb das man die Minuten gesondert rechnen muss, und sie es dennoch nicht getan haben etwas angebracht als Signal des "aufweckens"...
Sry für den etwaigen ironischen Unterton...
Entschuldigen Sie bitte das ich Sie vorhin etwas unwirsch angefahren habe, aber das schien mir aufgrund der Tatsache das Kaeru bereits schrieb das man die Minuten gesondert rechnen muss, und sie es dennoch nicht getan haben etwas angebracht als Signal des "aufweckens"...
Sry für den etwaigen ironischen Unterton...
(\/) (°,,,°) (\/)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
es geht auch ohne trennen und umrechnen, mit adaptiertem overflow-handling:
Code: Alles auswählen
a$ = "1330"
b$ = "2200"
a = Val(a$)
b = Val(b$)
c = b-a
If Val(Right(b$,2))-Val(Right(a$,2)) < 0
c = c -40
EndIf
d$ = Str(c)
Debug d$
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Mach dir doch einfach ne Prozedur dafür:
oder gleich so:
Code: Alles auswählen
Procedure.d T2V(TimeString.s)
Protected d.d = Val(Left(TimeString, 2)) + Val(Right(TimeString, 2)) / 60
ProcedureReturn d
EndProcedure
Debug T2V("2200") - T2V("1330")
Debug T2V("1923") - T2V("1141")
Code: Alles auswählen
Procedure.d CalulateRealTime(TimeStringStart.s, TimeStringEnd.s)
Protected Start.d = Val(Left(TimeStringStart, 2)) + Val(Right(TimeStringStart, 2)) / 60
Protected _End.d = Val(Left(TimeStringEnd, 2)) + Val(Right(TimeStringEnd, 2)) / 60
ProcedureReturn (_End - Start)
EndProcedure
Debug CalulateRealTime("1330", "2200")
Debug CalulateRealTime("1141", "1923")
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
Ähem,...
Guten Morgen.
Also wie wäre es wenn ihr einfach die date()-Funktion nutzt. (KeyKon nutzt ja auch ne "date()-Funktion", was genau so richtig und einfach ist
.Die finde ich an PB sehr toll, damit kann man sehr einfach rechnen. Diese rechnet eine Datum mit Uhrzeit in einen Sekundenwert um. Damit rechner ist dann ja superleicht. Gib die Startzeit mit einem "date()" an, die zweite mit einem neuen, dann addieren oder subtrahieren, ferig. Wenn gewünscht wandelt dir FormatDate() den Wert auch wieder in ne Uhrzeit um.
TIP: wenn es nur um ne Uhrzeit geht, nimm einfach einen festen Tag der nicht gerade in einem Schaltjahr Ende Februar liegt
[edit]
Guten Morgen.
Also wie wäre es wenn ihr einfach die date()-Funktion nutzt. (KeyKon nutzt ja auch ne "date()-Funktion", was genau so richtig und einfach ist

TIP: wenn es nur um ne Uhrzeit geht, nimm einfach einen festen Tag der nicht gerade in einem Schaltjahr Ende Februar liegt

[edit]
Code: Alles auswählen
Debug "Arbeitszeit von 13.30 Uhr bis 22 Uhr in Minuten(Ohne Rundungsfunkion):"
Debug (Date(2001,10,10,22,00,0) - Date(2001,10,10,13,30,0)) / 60
Debug FormatDate("%hh Stunden und %ii Minuten", Date(2001,10,10,22,00,0) - Date(2001,10,10,13,30,0) )
1. Win10
PB6.1
PB6.1