20 Stimmen

Wann wird das Java-Datum zusammenbrechen?

AFAIK speichert Java Daten in langen Variablen als Millisekunden. Folglich wird es eines Tages keinen Wert mehr geben (denn long hat ein Maximum), der der Zeit dieses Augenblicks entspricht. Wissen Sie, wann dies der Fall sein wird?

61voto

Jon Skeet Punkte 1325502

Das lässt sich leicht herausfinden:

public class Test {
    public static void main(String[] args) {
        System.out.println(new java.util.Date(Long.MAX_VALUE));
    }
}

Ergibt eine Ausgabe (auf meinem Rechner):

Sun Aug 17 07:12:55 GMT 292278994

Möglicherweise müssen Sie etwas abziehen von Long.MAX_VALUE zu bewältigen, wenn Ihre Zeitzone den Bereich "lang" übersteigt, aber es wird einen vernünftigen Richtwert geben :)

28voto

aioobe Punkte 397211

Nach der aktuellen Schaltjahr Vorschriften wird die durchschnittliche Anzahl der Tage pro Jahr sein

         365 + 1/4 - 1/100 + 1/400 = 365,2425 Tage pro Jahr

Das bedeutet, dass wir im Durchschnitt 31556952000 Millisekunden pro Jahr haben.

Der Long-Wert gibt die Anzahl der Millisekunden seit der Epoche (1. Januar 1970) und die maximale Zahl, die durch einen Java-Long dargestellt wird, ist 2 63 - 1, so dass die folgende Berechnung

         1970 + (2 63 - 1) / 31556952000

zeigt, dass diese Darstellung das Jahr 292278994 überlaufen wird.


Dies kann, wie Jon Skeet weist darauf hin bestätigt werden durch

-> System.out.println(new Date(Long.MAX_VALUE));
Sun Aug 17 08:12:55 CET 292278994

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X