On 2023-10-30 18:13, Marcel Mueller <
news.5...@spamgourmet.org> wrote:
> Am 29.10.23 um 12:31 schrieb Peter J. Holzer:
>>> (UTC könnte evtl. schon wieder Heckmeck mit Schaltsekunden machen)
>>
>> Da alle Zeitzonen von UTC abgeleitet sind, hast allfälliges Heckmeck mit
>> Schaltsekunden auch dort.
>
> Mir war, dass Greenwich _Mean_ Time genau das nicht hat,
Wie bereits geschrieben, hat "Greenwich Mean Time" mehrere Bedeutungen.
(Ich hatte hier bereits bereits zwei Absätze über die Geschichte
geschrieben, aber da ich die Details nicht auswendig weiß und in der
Wikipedia nachschlagen muss, habe ich die wieder gelöscht - kann ja
jeder auch selber nachlesen.)
Solange man nicht spezifiziert, was man mit "GMT" eigentlich meint, kann
man nicht sagen, ob es Schaltsekunden gibt oder nicht.
In manchem technisch-wissenschaftlichem Kontext ist GMT eine alternative
Bezeichnung für UT1. Das beruht auf der (geglätteten) Erdrotation und
hat keine Schaltsekunden.
Das ist aber nicht das, was die Öffentlichkeit unter GMT versteht und
ganz sicher nicht das, was Du bekommst, wenn Du auf einem Computer "GMT"
als Zeitzone einstellst. Das ist *zivile* Zeit und die beruht weltweit
auf UTC. Somit gibt es hier Schaltsekunden, auch wenn die meistens nicht
korrekt implementiert werden.
> und dass darin die Sekunden ggf. etwas gestreckt oder gestaucht
> werden, damit genau das nicht passiert. Jedenfalls dürfte die
> wenigsten Parser 23:59:60 akzeptieren.
Das ist wieder etwas anderes.
Auf POSIX-kompatiblen Betriebssystemen ist 23:59:60 nicht abbildbar.
2016-12-31T23:59:59Z war 1483228799 und 2017-01-01T00:00:00Z war
1483228800. Dazwischen ist kein Platz für eine weitere Sekunde. Das mag
man den Erfindern von Unix anlasten, die Mitte der 1970er-Jahre nicht
bemerkt haben, dass jedes Jahr eine Sekunde zu lang war (oder das für
vernachlässigbar hielten) oder den Machern von POSIX, die das 1988 nicht
korrigierten (aber da gab es halt schon ziemlich viele Unix-Systeme),
aber jedenfalls kann man das nicht mehr ändern.
Also gibt es drei Möglichkeiten:
1) Man ignoriert das Problem. Dann stellt man bei der ersten
Zeitsynchronisation nach der Schaltsekunde fest, dass die Uhr eine
Sekunde vorgeht und stellt sie zurück. Entweder sprunghaft oder
kontinuierlich über einen längeren Zeitraum. Vorteil: Einfach.
Nachteil: In einem Netzwerk wird jeder Computer zu einem anderen
Zeitpunkt feststellen, dass die Uhr falsch geht und man hat dann ein
paar Minuten bis ein paar Stunden lang ein bisschen ein Chaos.
Außerdem kann der plötzliche große Fehler von einer Sekunde zu
Überschwingen führen (je nach Algorithmus).
2) Man stellt exakt um Mitternacht UTC die Zeit auf 23:59:59 zurück.
Diese Sekunde ist dann doppelt. Das war klassischerweise das, was
NTP-Implementationen gemacht haben (NTP setzt rechtzeitig vorher ein
NTP-Flag, damit die Clients diesen Sprung exakt timen können).
Vorteil: Die Zeit ist bis 23:59:59 korrekt und ab 00:00:00 wieder.
Man hat nur 2 Sekunden Chaos, aber da geballt, da viele Programme
mit einem Rückwärtssprung in der Zeit nicht zurechtkommen.
3) Man "verschmiert" die Schaltsekunde. 12 Stunden vorher macht man die
Uhr um 1/86400 langsamer, 12 Stunden nachher schaltet man wieder auf
normale Geschwindigkeit. Damit hat vor 10 Jahren oder so Google
angefangen, und seitdem haben das etliche übernommen. Vorteil: Es
gibt keinen Zeitsprung, und weil alle Computer (die dieses Verfahren
einsetzen) synchron falsch gehen, gibt es auch keine Diskrepanzen
zwischen den Computern. Nachteil: Alle Computer gehen 24 h rund um
die Schaltsekunde um bis zu einer halben Sekunde falsch (zuerst
nach, dann vor) und außerdem zu langsam.
Das sind aber Strategien, um "POSIX-Zeit" an UTC anzupassen. Mit GMT hat
das alles nichts zu tun.
hp