Tại sao lại là
Ngày 1 tháng 1 năm 1970 00:00:00
coi thời đại nào?
Tại sao lại là
Ngày 1 tháng 1 năm 1970 00:00:00
coi thời đại nào?
Câu trả lời:
Các phiên bản đầu tiên của unix đo thời gian hệ thống trong các khoảng thời gian 1/60 giây. Điều này có nghĩa là số nguyên không dấu 32 bit chỉ có thể biểu thị một khoảng thời gian dưới 829 ngày. Vì lý do này, thời gian được biểu thị bằng số 0
(được gọi là kỷ nguyên ) phải được đặt trong quá khứ gần đây. Vì đây là vào đầu những năm 1970, kỷ nguyên được đặt thành 1971-1-1.
Sau đó, thời gian hệ thống được thay đổi thành tăng dần mỗi giây, làm tăng khoảng thời gian có thể được biểu thị bằng số nguyên không dấu 32 bit lên khoảng 136 năm. Vì nó không còn quá quan trọng để vắt kiệt từng giây ra khỏi quầy, kỷ nguyên đã được làm tròn xuống đến thập kỷ gần nhất, do đó trở thành 1970-1-1. Người ta phải cho rằng điều này được coi là gọn gàng hơn 1971-1-1.
Lưu ý rằng một số nguyên có chữ ký 32 bit sử dụng 1970-1-1 vì kỷ nguyên của nó có thể biểu thị các ngày lên tới 2038-1-19 , vào ngày mà nó sẽ kéo dài đến 1901-12-13.
Lịch sử .
Các phiên bản đầu tiên của thời gian Unix có số nguyên tăng 32 bit với tốc độ 60 Hz, là tốc độ của đồng hồ hệ thống trên phần cứng của các hệ thống Unix đầu tiên. Kết quả là giá trị 60 Hz vẫn xuất hiện trong một số giao diện phần mềm. Kỷ nguyên cũng khác với giá trị hiện tại. Phiên bản đầu tiên Hướng dẫn lập trình viên Unix ngày 3 tháng 11 năm 1971 định nghĩa thời gian Unix là "thời gian kể từ 00:00:00, ngày 1 tháng 1 năm 1971, được đo bằng sáu mươi giây".
http://en.wikipedia.org/wiki/Unix_time#History giải thích một chút về nguồn gốc của thời gian Unix và kỷ nguyên được chọn. Định nghĩa về thời gian unix và ngày kỷ nguyên đã trải qua một vài thay đổi trước khi ổn định với hiện tại.
Nhưng nó không nói lý do tại sao chính xác 1/1/1970 được chọn cuối cùng.
Đoạn trích đáng chú ý từ trang Wikipedia:
Các ấn bản đầu tiên tay đề ngày 3 tháng 11 1971 định nghĩa thời gian Unix Unix Programmer là "thời gian từ 00:00:00, 1 Jan., năm 1971 , được đo bằng sixtieths của một giây".
Do [phạm vi] giới hạn, kỷ nguyên được xác định lại nhiều lần , trước khi tốc độ được thay đổi thành 1 Hz và kỷ nguyên được đặt thành giá trị hiện tại.
Một số vấn đề sau này, bao gồm cả sự phức tạp của định nghĩa hiện tại, xuất phát từ thời gian Unix được xác định dần dần bằng cách sử dụng thay vì được xác định đầy đủ để bắt đầu.
Một ngày tham chiếu kỷ nguyên là một điểm trên dòng thời gian mà chúng ta đếm thời gian. Khoảnh khắc trước thời điểm đó được tính bằng số âm, khoảnh khắc sau được tính bằng số dương.
Tại sao ngày 1 tháng 1 năm 1970 00:00:00 được coi là thời gian kỷ nguyên?
Không, không phải các thời đại, một kỷ nguyên. Có nhiều kỷ nguyên được sử dụng .
Sự lựa chọn này của thời đại là tùy ý .
Các hệ thống máy tính và thư viện lớn sử dụng bất kỳ ít nhất vài chục kỷ nguyên khác nhau . Một trong những kỷ nguyên phổ biến nhất thường được gọi là Thời gian Unix , sử dụng thời điểm UTC 1970 mà bạn đề cập.
Mặc dù phổ biến, Unix Time 1970 có thể không phải là phổ biến nhất . Ngoài ra, hoạt động phổ biến nhất sẽ là ngày 0 tháng 1 năm 1900 cho vô số bảng tính Microsoft Excel & Lotus 1-2-3 hoặc ngày 1 tháng 1 năm 2001 được sử dụng bởi khung Cacao của Apple trong hơn một tỷ máy iOS / macOS trên toàn thế giới trong vô số ứng dụng. Hoặc có lẽ ngày 6 tháng 1 năm 1980 được sử dụng bởi các thiết bị GPS ?
Các hệ thống khác nhau sử dụng độ chi tiết khác nhau trong thời gian đếm.
Ngay cả cái gọi là Thời gian Unix Unix cũng khác nhau, với một số hệ thống đếm cả giây và một số tính bằng mili giây . Nhiều cơ sở dữ liệu như Postgres sử dụng micro giây . Một số, chẳng hạn như khung java.time hiện đại trong Java 8 trở lên, sử dụng nano giây . Một số sử dụng vẫn còn chi tiết khác.
Bởi vì có quá nhiều sự khác biệt trong việc sử dụng một tham chiếu kỷ nguyên và trong các mức độ chi tiết, nói chung, tốt nhất là tránh giao tiếp những khoảnh khắc như một đếm từ thời đại. Giữa sự mơ hồ của kỷ nguyên & độ chi tiết, cộng với việc con người không có khả năng nhận thức các giá trị có ý nghĩa (và do đó bỏ lỡ các giá trị lỗi), hãy sử dụng văn bản đơn giản thay vì số.
Các tiêu chuẩn ISO 8601 tiêu chuẩn cung cấp một bộ đầy đủ của thực tiễn các định dạng được thiết kế để thể hiện các giá trị ngày thời gian dưới dạng văn bản. Các định dạng này dễ dàng phân tích bằng máy cũng như dễ đọc bởi con người trên các nền văn hóa.
Bao gồm các:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
Câu trả lời ngắn gọn: Tại sao không?
Câu trả lời dài hơn: Thời gian tự nó không thực sự quan trọng, miễn là mọi người sử dụng nó đồng ý với giá trị của nó. Vì 1/1/70 đã được sử dụng quá lâu, sử dụng nó sẽ giúp bạn viết mã dễ hiểu nhất có thể cho càng nhiều người càng tốt.
Không có công lớn trong việc lựa chọn một kỷ nguyên tùy ý chỉ để khác biệt.