Chào mọi người, mình đang làm tính năng thiết lập thời gian cho thiết bị của mình (thiết bị đang chạy ubuntu). Mình sử dụng command timedatectl set-time "YYYY-MM-DD HH:MM:SS"
để thiết lập thời gian, trong quá trình test, khi mốc thời gian vượt quá ngày 2038-01-19 sẽ bị gặp lỗi Failed to parse time specification
.
Ảnh minh họa
Các mốc thời gian nhỏ hơn khoảng thời gian kia thì vẫn hoạt động bình thường.
Mình đã tìm kiếm trên google nhưng vẫn chưa tìm ra được cách giải quyết, mong mọi người giúp đỡ mình trường hợp này. Mình xin cám ơn
Lỗi "Failed to parse time specification" khi thiết lập thời gian trên ubuntu
Mình nghĩ thời gian được lưu ở dạng số nguyên có dấu (int
) nên xảy ra vấn đề này.
Giá trị lớn nhất của int
là 2,147,483,647
thời gian bạn nhập ngày 18 là 2,147,408,875
vẫn nằm trong giới hạn của int
và đến ngày 19 là 2,147,495,275
, vượt giới hạn của int
.
(Giờ tính theo múi giờ GMT+0).
Nếu bản thân máy tính vẫn có thể chạy hơn nữa, thì vấn đề do timedatectl
đã dùng 1 biến kiểu int
để lưu trữ và chính nó gây nên chuyện này.
Mình suy đoán thế thôi, không chắc chắn đâu nhé.
các hiện thống hiện tại chỉ lưu timestamp với số nguyên chỉ có 32bit thôi, nên đến 2038 thì nó vượt quá thì tạch thôi
mà có lý do gì để bạn lại thiết lập thời gian trên máy bạn như vậy? chỉ vọc thử lệnh? hay bạn đọc thấy ở đâu đó và muốn challange mọi người :))
Nguyên nhân và cách giải quyết (mitigation) của từng platform: https://en.wikipedia.org/wiki/Year_2038_problem.
Cám ơn bạn rất nhiều, thì ra là vấn đề nằm ở đó
Cám ơn bạn, mình suy nghĩ mãi không biết vấn đề nằm ở đâu thì ra là do cấu trúc 32bit. Do mình làm xong cái tính năng thiết lập thời gian đang thử vài test case rồi gặp lỗi này, chứ không phải cố tình gì đâu
Cám ơn bạn rất nhiều, trong link mô tả rất chi tiết luôn, rất hữu ích.