Was sollten wir tun, um uns vorzubereiten für das Jahr 2038?

Ich würde gerne glauben, dass einige der software, die ich Schreibe heute werden in 30 Jahren. Aber ich bin mir auch bewusst, dass viele davon basieren auf der UNIX-tradition, wodurch die Zeit als Anzahl der Sekunden seit 1970.

#include <stdio.h>
#include <time.h>
#include <limits.h>

void print(time_t rt) {
    struct tm * t = gmtime(&rt);
    puts(asctime(t));
}

int main() {
    print(0);
    print(time(0));
    print(LONG_MAX);
    print(LONG_MAX+1);
}

Ausführung:

  • Thu Jan 1 00:00:00 1970
  • Sa Aug 30 18:37:08 2008
  • Tue Jan 19 03:14:07 2038
  • Fri Dec 13 20:45:52 1901

Die Funktionen ctime(), gmtime () und localtime() alle nehmen als argument einen Wert der Uhrzeit für die Zeit in Sekunden seit der Epoche (00:00:00 UTC, January 1, 1970; siehe time(3) ).

Frage ich mich, ob es etwas gibt, proaktiv zu tun in diesem Bereich als Programmierer, oder sind wir darauf Vertrauen, dass alle software-Systeme (auch bekannt als Betriebssysteme), wird wie magisch in der Zukunft erweitert?

Update Es scheint, dass tatsächlich 64-bit-Systeme sind sicher von dieser:

import java.util.*;

class TimeTest {
    public static void main(String[] args) {
        print(0);
        print(System.currentTimeMillis());
        print(Long.MAX_VALUE);
        print(Long.MAX_VALUE + 1);
    }

    static void print(long l) {
        System.out.println(new Date(l));
    }
}
  • Wed Dec 31 16:00:00 PST 1969
  • Sat Aug 30 12:02:40 PDT 2008
  • Sat Aug 16 23:12:55 PST 292278994
  • Sun Dec 02 08:47:04 PST 292269055

Aber was ist mit dem Jahr 292278994?

  • Sie würde glücklich sein, wenn Sie vorhanden waren, haftet für einen Unfall, dass das Jahr, würden Sie nicht?
  • Mach dir keine sorgen über das Jahr 292278994. Die meisten Systeme scheitern im Jahr 2147483647.
  • Ich denke, Sie haben uns überzeugt - wir brauchen zu bewegen, um 128-bit-sofort!
  • Die Welt endet im Jahr 2012, warum würden Sie brauchen, um zu Messen, jeder Zeit Vergangenheit?
  • Die Sonne ist ein Roter Riese und die Menschheit ist Weg 😀
Schreibe einen Kommentar