Ich habe Datum (GNU coreutils) 7.1 auf meinem System installiert.
Wenn ich versuche, Daten vor dem 14. Dezember 1901 zu überprüfen, wird der Fehler "Ungültiges Datum" angezeigt. Beispielsweise,
$ date -d 1901-12-13
date: invalid date `1901-12-13'
$ date -d 1901-12-14
Sat Dec 14 00:00:00 EST 1901
Was soll ich tun, damit das date
Dienstprogramm Jahre vor 1901 als gültig behandelt?
Ich erhalte ähnliche Fehler für Daten nach dem 19. Januar 2038
shell-script
date
Jasdeep Singh
quelle
quelle
Antworten:
Gute Frage.
Die Dokumentation sagt, dass es erlaubt sein sollte.
Sind Sie auf einem 32-Bit-System?
Erhalten Sie auch einen Fehler mit Daten nach 2038-01-20, z
In diesem Fall verwendet das GNU-Datum einen 32-Bit-Zeitwert.
Ich bin mir nicht sicher, wie Sie dies beheben können, außer mit einem 64-Bit-System oder einem anderen Tool, z. B. DateTime in Perl oder datetime in Python.
Einige Hintergrundinformationen:
Unix-Zeiten zählen die Anzahl der Sekunden ab dem 1. Januar 1970 mit einem ganzzahligen Wert. Wenn das System 32-Bit-Ganzzahlen verwendet, kann es nur 2,1 Milliarden Sekunden vorwärts (bis 2038-01-19 03:14:02 UTC) und 2,1 Milliarden Sekunden rückwärts (zurück bis 1901-12-13 20:45:52) zählen KOORDINIERTE WELTZEIT).
Weitere Informationen unter:
quelle
uname
Befehl nicht viele Informationen preisgeben, außer der Tatsache, dass es sich um einen i686-Computer handelt, von dem ich annehme, dass es sich um 32-Bit-Computer handelt. Was das 2038-Problem betrifft, ja, dieses Problem ist tatsächlich auf dem Remote-Server vorhanden. Nochmals vielen Dank für Ihre Eingabe! Sehr geschätzt !!Ihr System (oder zumindest diese Datumsversion ) verwendet wahrscheinlich einen internen 32-Bit-Zeitwert.
Die Unix-Epoche (Zeitwert Null) ist 1970-01-01 00:00:00 UTC. Dieser Startpunkt liegt zwischen 1901-12-13 00:00 EST knapp außerhalb des Bereichs eines vorzeichenbehafteten 32-Bit-Zeitwerts.
1901-12-14 00:00:00 EST ist -2147454000
1901-12-13 15:45:52 EST ist -2147483648 (auch bekannt als
INT_MIN
in C, die minimale 32-Bit-Ganzzahl mit Vorzeichen)1901-12-13 00:00: 00 EST ist -2147540400
Sie könnten versuchen, 1901-12-13 15:45:52 EST zu verwenden. Es sollte funktionieren, aber eine Sekunde früher wird wahrscheinlich genauso scheitern wie 1901-12-13 00:00.
quelle