คำถามที่ดี.
เอกสารบอกว่ามันควรได้รับอนุญาต
info date 'Date input formats' 'Calendar date items'
สำหรับเดือนที่เป็นตัวเลขอนุญาตให้ใช้รูปแบบ ISO 8601 'YEAR-MONTH-DAY' โดยที่ YEAR เป็นตัวเลขบวก ...
จะต้องมีศูนย์นำหน้าถ้าจำนวนน้อยกว่าสิบ
ถ้า YEAR น้อยกว่า 68 ปี 2000 จะถูกเพิ่มเข้าไป มิฉะนั้นถ้า YEAR น้อยกว่า 100 ดังนั้น 1900 จะถูกเพิ่มเข้าไป
คุณใช้ระบบ 32 บิตหรือไม่?
คุณได้รับข้อผิดพลาดกับวันที่หลังปี 2038-01-20 เช่นกัน
date -d '2038-01-20'
ถ้าเป็นเช่นนั้นดูเหมือนว่าวันที่ของ GNU กำลังใช้ค่าเวลา 32 บิต
ฉันไม่แน่ใจว่าคุณจะแก้ไขปัญหานี้ได้อย่างไรนอกจากใช้ระบบ 64 บิตหรือใช้เครื่องมือที่แตกต่างกันเช่นDateTimeใน Perl หรือdatetimeใน Python
พื้นหลังบางส่วน:
เวลา Unix จะนับจำนวนวินาทีตั้งแต่ 1 มกราคม 1970 โดยใช้ค่าจำนวนเต็ม หากระบบใช้จำนวนเต็ม 32 บิตจะสามารถนับได้ 2.1 พันล้านวินาทีไปข้างหน้า (สูงสุด 2038-01-19 03:14:02 UTC) และ 2.1 พันล้านวินาทีย้อนหลัง (กลับไปที่ 1901-12-13 20:45:52 UTC)
ข้อมูลเพิ่มเติมได้ที่: