Autokiller677 schrieb:
Ne nicht nach vorne, es sollte ja eine Sekunde dazukommen. Genau genommen wurde die Sekunde 23:59:60 einmalig eingefügt.
1.) Der PC speichert Zeitangaben nie in Stunden, Minuten, Sekunden, sondern immer als Anzahl der vergangenen Zeiteinheiten seit einem bestimmten Datum. Üblich sind z.B. Millisekunden seit 1970 (32Bit) bzw. 1/10 Mio. Sekunden seit dem Jahr 0 (64Bit).
Bei dem von dir genannten Datum handelt es sich also um 0:00:00 des nächsten Tages und dort wird dann noch eine Sekunde eingeschoben.
2.) Ich frage mich ernsthaft, wer überhaupt auf die dämliche Idee gekommen ist, Schaltsekunden in den Kernel zu implementieren und nicht zu testen. Ich könnte mich jetzt wieder über die Linuxgemeinde auslassen bezüglich verspielte Freaks, aber ich glaube das lasse ich lieber.
Auf 99,999% der Server kann die Schaltsekunde komplett ignoriert werden, da die Uhrzeit sowieso von einer normalen Uhr kommt, die sowieso etwas falsch geht. Wer es wirklich so genau braucht, kann das ja mit der nächsten Synchronisation mit dem Zeitserver abgleichen.
Diese Schaltsekunde ist nur relevant, wenn als Basis für die Systemzeit wirklich eine Atomuhr genommen wird. Das ist gerade bei einer hand voll wissenschaftlicher Anwendungen so, die wirklich prezise Messungen benötigen und diese sind sowieso nicht an die Systemzeit gebunden.
3.) Einer Software, die auch nur halbwegs vernünftig programmiert ist, darf so etwas nichts machen. Hier muss man nur ein paar Grundsätze beachten:
.) Es ist nicht gesagt, dass ein Ereignis, das später eintritt auch eine spätere Uhrzeit hat. Diese kann zurückgestellt werden (z.B. bei Sommer/Winterzeit, oder händischer Korrektur der Uhrzeit)
.) Wenn man eine Zeitdauer ermitteln und weiterverarbeiten will, dann muss man einen Timer laufen lassen. Start und Ende abzugreifen ist nur als grobe Richtlinie zu verstehen. Das taugt für die Geschwindigkeit bei einem Fortschrittsbalken, aber mehr schon nicht.
.) Wenn man zwei Datumswerte vergleicht, dann immer auf gleich oder nicht gleich, aber keinesfalls auf neuer bzw. älter, wenn es um wichtige Entscheidungen geht (z.B. Änderungsdatum einer Datei für die Versionierung verwenden)
.) Die Uhrzeit des Erstellungsdatums sagt nichts über die Reihenfolge der Erstellung aus. Wenn man etwas danach sortieren will, dann muss man aufzählende Nummern vergeben. Das Systemdatum hier hierfür ungeeignet.
4.) Wenn man Code für die Uhrzeitbehandlung schreibt, dann muss man verdammt vorsichtig sein, da der Fehler nie auftritt und dann plötzlich auf allen Systemen. Das hat schon MS mit ihrem mp3 Player herausfinden müssen, der dann im ersten Schaltjahr nicht mehr gebootet ist.
Da macht man keine unnötigen Spielereien, die keiner unbedingt braucht bzw. muss den Code entsprechend absichern (z.B. Schleifenbegrenzer, die nach einer gewissen Anzahl an Durchläufen abbrechen, um Endlosschleifen zu vermeiden etc.) Man muss den Code auch so einfach halten, wie möglich, damit auch ohne Test die Funktionalität nachgewiesen werden kann.