Forum: PC-Programmierung Codierung der Zeit im NTP-Datenpaket


von Daniel M. (daniel_91)


Lesenswert?

Hallo liebe Community,

ich beschäftige mich zur Zeit ein wenig mit NTP, Zeitservern und der 
Unix-Zeit.

So wie ich das nach dem studieren diverser Webseiten verstehe, gibt eine 
NTP-Abfrage die Zeit in Sekunden seit dem 01.01.1990 00:00 Uhr zurück. 
Ist das soweit korrekt?

Und die Unix-Zeit läuft seit dem 01.01.1970 00:00, wenn ich das korrekt 
verstanden habe.

Nun habe ich unter
https://circuits4you.com/2018/01/02/esp8266-nodemcu-ntp-time-clock/
einen Code gefunden, der aus der NTP-Zeit die Unix-Zeit berechnet, in 
dem er von der NTP-Zeit 2.208.988.800 Sekunden abzieht.

Wenn ich das nachrechne, so komme ich zu folgendem Ergebnis:
Zwischen 01.01.1900 und 01.01.1970 liegen exakt 18 Schalt- und 52 
Normaljahre
1 Schaltjahr hat 3600*24*366 = 31.622.400 Sekunden
18 Schaltjahre haben demnach 18*31.622.400 Sekunden = 569.203.200 
Sekunden
1 Normaljahr hat 3600*24*365 = 31.536.000 Sekunden
52 Normaljahre haben demnach 52*31.536.000 Sekunden = 1.639.872.000 
Sekunden
Zusammen macht das: 2.209.075.200 Sekunden
Das macht zu 2.208.988.800 Sekunden eine Differenz von 86400 Sekunden 
(entspricht exakt 1 Tag).

Kann mir einer von euch vielleicht erklären, wo da der Fehler liegt?
Ist zwischen 1900 und 1970 irgendwo ein Tag verloren gegangen, oder habe 
ich irgendwas falsch verstanden?

Vielen Dank für eure Hilfe im Vorraus.

von Mario M. (thelonging)


Lesenswert?

Vielleicht liegt es daran, dass 1900 kein Schaltjahr war?

von Hmmm (Gast)


Lesenswert?

1900 war kein Schaltjahr (durch 100 teilbar), daher waren es nur 17 
statt 18 Schaltjahre, und Du hast einen Tag zuviel.

von Daniel M. (daniel_91)


Lesenswert?

Tja, so einfach kann es sein.
Dachte bis jetzt immer, dass jedes Jahr, welches durch 4 Teilbar ist, 
ein Schaltjahr ist.

Vielen Dank für eure Antworten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Daniel M. schrieb:
> Dachte bis jetzt immer, dass jedes Jahr, welches durch 4 Teilbar ist,
> ein Schaltjahr ist.

Hast du das Jahr 2000 verschlafen? ;-)

von Max M. (jens2001)


Lesenswert?

Jörg W. schrieb:
> das Jahr 2000

DAS war nämlich ein Schaltjahr!
Und jetzt finde raus warum;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Max M. schrieb:
> DAS war nämlich ein Schaltjahr!

Stimmt an-den-Kopf-klatsch :)

Ist ja durch 400 teilbar, 1900 dagegen nicht.

Dann ist die Welt ja wieder in Ordnung.

von Andreas Müller (Gast)


Lesenswert?

Daniel M. schrieb:
> Hallo liebe Community,
>
> ich beschäftige mich zur Zeit ein wenig mit NTP, Zeitservern und der
> Unix-Zeit.
>
> So wie ich das nach dem studieren diverser Webseiten verstehe,

Tu Dir selber einen Gefallen, und zieh bei solchen Fragen die RFC in 
Frage. Bei den Webseiten weisst Du nie, ob das alles richtig ist.

https://www.ietf.org/rfc/rfc5905.txt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.