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
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.
Karl H. schrieb:> Sinn der Sache ist es, dass man beim Runden sich nicht grossartig um> Stundenüberläufe kümmern muss.
Das ist wieder so ein "Karl-Heinz-in-Aktion". Echt guter Tip.
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
Route 6. schrieb:> So spart man sich Bytes beim Abspeichern von> Datum und Zeitangaben.
Das ist natürlich auch n Aspekt, zumal Speicher heutzutage mehr als
knapp ist ;). Spass bei Seite, das UNIX-Zeitformat ist mir bekannt, aber
es hierauf anzuwenden ist eine brillante Idee.
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.
>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"..
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.
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.
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