Saya memiliki tanggal (GNU coreutils) 7.1 diinstal pada sistem saya.
Jika saya mencoba memeriksa tanggal sebelum 14-Des-1901, saya mendapatkan kesalahan "tanggal tidak sah". Sebagai contoh,
$ date -d 1901-12-13
date: invalid date `1901-12-13'
$ date -d 1901-12-14
Sat Dec 14 00:00:00 EST 1901
Apa yang harus saya lakukan agar date
utilitas untuk memperlakukan tahun sebelum 1901 valid?
Saya menerima kesalahan serupa untuk tanggal setelah 19-Jan-2038
shell-script
date
Jasdeep Singh
sumber
sumber
Jawaban:
Pertanyaan bagus.
The dokumentasi mengatakan itu harus diperbolehkan.
Apakah Anda menggunakan sistem 32-bit?
Apakah Anda mendapatkan kesalahan dengan tanggal setelah 2038-01-20 juga, mis
Jika demikian, sepertinya tanggal GNU menggunakan nilai waktu 32-bit.
Saya tidak yakin bagaimana Anda bisa memperbaikinya selain menggunakan sistem 64-bit atau menggunakan alat yang berbeda, misalnya DateTime dalam Perl atau datetime dengan Python.
Beberapa latar belakang:
Waktu unix menghitung jumlah detik dari 1 Januari 1970 menggunakan nilai integer. Jika sistem menggunakan bilangan bulat 32-bit, itu hanya dapat menghitung maju 2,1 miliar detik (hingga 2038-01-19 03:14:02 UTC) dan 2,1 miliar detik mundur (kembali ke 1901-12-13 20:45:52 UTC).
Informasi lebih lanjut di:
sumber
uname
perintah kecuali fakta bahwa ia mengatakan itu mesin i686, yang saya anggap mesin 32 bit. Adapun masalah 2038, ya, masalah itu ada sebenarnya di server jauh. Sekali lagi terima kasih atas masukan Anda! Sangat dihargai !!Sistem Anda (atau setidaknya versi tanggal itu ) mungkin menggunakan nilai waktu internal 32-bit.
Masa Unix (nilai waktu nol) adalah 1970-01-01 00:00:00 UTC. Titik awal ini menempatkan 1901-12-13 00:00 EST tepat di luar kisaran nilai waktu 32-bit yang ditandatangani.
1901-12-14 00:00:00 EST adalah -2147454000
1901-12-13 15:45:52 EST adalah -2147483648 (alias
INT_MIN
dalam C, bilangan bulat bertanda minimum 32-bit)1901-12-13 00:00: 00 EST adalah -2147540400
Anda dapat mencoba menggunakan 1901-12-13 15:45:52 EST. Seharusnya berfungsi, tetapi satu detik sebelumnya mungkin akan gagal dengan cara yang sama seperti 1901-12-13 00:00.
sumber