Như tất cả các lập trình viên Perl (hy vọng) biết, giá trị năm từ một cuộc gọi đến localtime
chức năng Perl là tương đối so với 1900. Tự hỏi tại sao điều này là, tôi đã xem xét các perldoc for localtime, và thấy nugget thú vị này:Tại sao giá trị năm trong hàm địa phương của Perl (và cấu trúc tm của C) liên quan đến 1900?
Tất cả các phần tử danh sách đều là số và đi thẳng ra khỏi C `struct tm '.
Nhìn vào số C++ reference for the tm struct, tôi thấy rằng biến thành viên tm_year
được khai báo là int
.
Câu hỏi: Tại sao, sau đó, là giá trị năm có liên quan đến năm 1900 và không chỉ đơn giản là năm đầy đủ, bốn chữ số? Có lý do lịch sử nào không? Dường như với tôi rằng, ngay cả với những giới hạn bộ nhớ sớm trong máy tính, một số nguyên (rõ ràng) là quá đủ để lưu trữ cả năm. Phải có lý do chính đáng; Tôi tò mò về những gì có thể.
Lịch sử. Lỗi Y2K không phải là hiển nhiên trong đầu những năm 70 khi tiêu chuẩn thực tế đã được sửa. Sau đó, đã quá muộn để thay đổi nó mà không phá vỡ một lượng lớn mã. –