Frage

Ich habe gerade beim Ausführen eines Kalenderskripts herausgefunden, dass Zeitstempel in PHP auf 2038 begrenzt sind. Was bedeutet das wirklich?Warum ist es 2038 statt 2050 oder 2039?Warum ein Limit, wenn Zeitstempel ab einem bestimmten Datum (1970) nur Sekunden zählen?

War es hilfreich?

Lösung

Das Limit wird durch die 4-Byte-Ganzzahlen mit Vorzeichen festgelegt, die die meisten C-Bibliotheken zur Darstellung dieser Anzahl verwenden.Schnelle Mathematik (setzt 365 Tage voraus, nicht genau richtig):

2147483648 seconds ~ 68.1 years

Dies impliziert auch eine Untergrenze von ~ 1900.Einige Bibliotheken haben damit begonnen, 64-Bit-Epochenzahlen einzuführen, aber im Moment gibt es nur wenige.

Andere Tipps

Der Maximalwert einer 32-Bit-Ganzzahl beträgt 2.147.483.647.Wenn Sie +1 hinzufügen, erhalten Sie -2.147.483.647.2.147.483.647 Sekunden vom 01.01.1970 00:00:00 ist der 19. Januar 2038. Wenn Sie eine weitere Sekunde hinzufügen, erhalten Sie irgendwo im Jahr 1902 ein Datum.

Ich vermute, dass es in einer festen Anzahl von Bits gespeichert ist, was eine Begrenzung der Größe des Zeitstempels bedeutet.Wir könnten etwas rechnen, um es genau herauszufinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top