Zeiterfassung

Gast #4208113
Lesenswert?

Hallo Zusammen

Für das Programmieren einer Zeiterfassung benötige ich eine Funktion um 
die Zeit einzurasten. z.B. Compiller CPP
Als Ausgangs Zeit gilt die Systemzeit PC.

Auf 5 min, 10 min und 15 min.

12:01 -> 12:05  //auf 5 min
12:01 -> 12:10  //auf 10 min
12:01 -> 12:15  //auf 10 min


12:09 -> 12:10  //auf 5 min
12:09 -> 12:10  //auf 10 min
12:09 -> 12:15  //auf 10 min

Hat mir da mal jemand einen Tip zur Vorgehensweise.

Gruß Nilix
#4208125
Lesenswert?

1
if(Minute%5 != 0) Minute_5 = (Minute / 5) * 5 + 5;
2
else Minute_5 = Minute;
3

4
if(Minute%10 != 0)Minute_10 = (Minute / 10) * 10 + 10;
5
else Minute_10 = Minute;
6

7
if(Minute%15 != 0)Minute_15 = (Minute / 15) * 15 + 15;
8
else Minute_15 = Minute;

Stundenüberläufe musst du natürlich auch noch abfangen!
#4208275
Lesenswert?

Tip:
Manchmal rechnen sich Dinge einfacher, wenn man nicht getrennt in 
Minuten und Stunden agiert, sondern zb in diesem Fall einfach eine 
'Minutenzählung ab Mitternacht' macht.
Stunden und Minuten in diese 'Minuten ab Mitternacht' umzurechnen ist 
trivial. Dann wird so gerundet, wie du das haben möchtest und danach der 
erhaltene 'Minutenwert ab Mitternacht' wieder in Stunden und Minuten 
zurück verwandelt.

Sinn der Sache ist es, dass man beim Runden sich nicht grossartig um 
Stundenüberläufe kümmern muss.
#4208430
Lesenswert?

Ingo L. schrieb:
> Das ist wieder so ein "Karl-Heinz-in-Aktion". Echt guter Tip.

Den Trick hat er sich nicht ausgedacht, das wird schon seit Jahrzehnten 
so gemacht (UNIX-Zeit). So spart man sich Bytes beim Abspeichern von 
Datum und Zeitangaben. (32 Bit reichen bis 2038). Die Umrechnung in 
Jahr, Monat, Tag, Stunde... Schaltjahr usw. ist ja nur für uns Menschen 
erforderlich, dem Computer ist sowas egal.

https://de.wikipedia.org/wiki/Unixzeit
#4208477
Lesenswert?

Route 6. schrieb:
> Ingo L. schrieb:
>> Das ist wieder so ein "Karl-Heinz-in-Aktion". Echt guter Tip.
>
> Den Trick hat er sich nicht ausgedacht, das wird schon seit Jahrzehnten
> so gemacht (UNIX-Zeit).


Eigentlich ist die 'Technik' sogar noch viel älter.
Das älteste Beispiel, das mir einfällt, ist das Julianische Datum. 
Einfach eine fortlaufende Tagzählung, die mit dem 1. Jannuar 4713 vor 
Christus beginnt.

Wer jemals astronoimsche Berechnungen gemacht hat, weiss den Segen zu 
schätzen, wenn man einfach eine gewisse Anzahl an Differenztagen zu 
einem 'Datum' addieren kann, ohne sich ständig mit 
Tag/Monat/Jahr/Schaltjahr rumärgern zu müssen.


Das Prinzip lässt sich überall anwenden. Wir sind das nicht mehr so 
gewohnt, weil wir seit der franz. Revolution vereinheitlichte 
Masssysteme auf Basis von 10-er Potenzen haben. So etwas wie "Addieren 
sie zu Meilen und Füssen Yards Furlongs und Inch dazu" ist für uns kein 
Thema mehr. Der einfachste Weg ist auch hier erst mal alles in eine 
einzelne Basiseinheit zurückzurechnen, dort dann die Operation machen 
und von dort dann wieder in die diversen Einzeleinheiten aufzusplitten 
(wenn man die braucht, zb für Anzeigezwecke). Das einzige, bei dem wir 
uns noch ärgern sind: Datum, Uhrzeit, Winkel.

Und natürlich ist das die Basis der allseits geschätzten Fixpunkt 
Arithmetik.
#4208576
Lesenswert?

>das wird schon seit Jahrzehnten so gemacht (UNIX-Zeit).
bis man im Jahr 1999 drauf gekommen ist, dass man das doch nicht überall 
so gemacht hat, und das Jahr 00 u.U Probleme macht..



>32 Bit reichen bis 2038

das ist nicht das einzige Problem
auch Zeitzonen, Schaltsekunden und Sommer/Winterzeit lassen sich in 
32Bit nicht so recht unterbringen..

soviel zu "genial"..
#4208613
Lesenswert?

Robert L. schrieb:

> das ist nicht das einzige Problem
> auch Zeitzonen, Schaltsekunden und Sommer/Winterzeit lassen sich in
> 32Bit nicht so recht unterbringen..
>
> soviel zu "genial"..

Definitionssache.
Wir definieren: die Unix Systemzeit ist immer in UTC.
Die Umrechnung in die aktuelle lokale Zeit erledigt dann eine Funktion, 
die über derartige Besonderheiten bescheid weiss.

Aber ich geb dir recht. Das ist bei den Zeiten tatsächlich 
besch...eiden. Das liegt allerdings weniger an der Unix Zeit, sondern 
mehr daran, dass Zeitsysteme grundsätzlich simpel aussehen, der Teufel 
allerdings im Detail liegt.
Gast #4208641
Lesenswert?

Karl H. schrieb:
> Aber ich geb dir recht. Das ist bei den Zeiten tatsächlich
> besch...eiden. Das liegt allerdings weniger an der Unix Zeit, sondern
> mehr daran, dass Zeitsysteme grundsätzlich simpel aussehen, der Teufel
> allerdings im Detail liegt.

Halb-OT:
Ich weiß nicht, ob hier jemand Jon Skeet kennt (ganz unterhaltsamer 
Redner, Softwareingenieur bei Google, hat ein paar Bücher und u.a. die 
Library "Noda Time" geschrieben). Jedenfalls ist dieses "besch...eiden" 
eines seiner Lieblingsthemen. Wenn man ihm mal eine Weile zugehört hat, 
möchte man bei jeder Begegnung mit Zeit oder Datum umdrehen sehr schnell 
und weit laufen.
Gast #4210885
Lesenswert?

Nilix schrieb:
> Auf 5 min, 10 min und 15 min.

Von allen anderen Zeitproblemen mal abgesehen, eine auf 5 min gerundete 
Zeit würde ich keinesfalls zur Datenspeicherung benutzen, sondern die 
UTC-Zeit abspeichern. Der Grund hat mit IT wenig zu tun: die Tatsache 
dass Arbeitszeiten nur in 5min-Einheiten erfasst werden (was immer das 
soll), ist ohnehin zustimmungspflichtig durch einen Betriebsrat, und 
wenn ein Mitarbeiter dagegen klagt, könnte er leicht recht bekommen. Es 
wäre sehr peinlich und teuer, dann alles von Grund auf ändern zu müssen.

Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren