Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix
Tại sao thời gian Unix bắt đầu vào 1 tháng 1 1970: lịch sử ngắn gọn về kỷ nguyên
· Lý lịch
dấu thời gian unix-time data-formats
Không có gì xảy ra vào 1 tháng 1 1970; ngày được chọn để thuận tiện sau khi đồng hồ ban đầu của Unix có nguy cơ bị tràn. Bài đăng này kể câu chuyện về đồng hồ Unix thời kỳ đầu, việc chuyển sang giây và cách quy ước lan rộng khắp nơi.
Một ngày không ai kỷ niệm — tại sao 1970 liên tục xuất hiện trong các lỗi, mặc định và trang tổng quan nửa thế kỷ sau
Tháng 1 1970 xuất hiện bất cứ khi nào phần mềm nhầm lẫn một khoảng thời gian nhỏ hoặc số giây được tính bằng mili giây. Đó không phải là ngày sinh dự phòng được tạo bởi ToolAcre; đó là điểm 0 mà từ đó đầu vào được diễn giải. Bài kiểm tra epoch zero trả về `1970-01-01T00:00:00.000Z` và Thứ Năm.
Do đó, nhìn thấy ngày đó là chẩn đoán. Một giá trị gần bằng 0, một trường bị thiếu bị ép về 0 hoặc tỷ lệ không khớp đều có thể hạ cánh ở gần đó. Nắm bắt giá trị thô trước khi đổ lỗi cho định dạng. Đầu ra lịch hiển thị số học mà nó nhận được.
Bảng kỷ nguyên đáng chú ý của ToolAcre không có nhãn có chủ ý, củng cố rằng 1970 là một tham chiếu được xác định chứ không phải là trang lỗi do trình duyệt chọn.
Đồng hồ đầu tiên của Unix — đếm sáu mươi giây kể từ khi bắt đầu 1971 và hết 32-bit dung lượng trong vòng chưa đầy ba năm
Sổ làm việc cung cấp thông tin chi tiết về đồng hồ sớm đếm số sáu mươi từ 1971. Không có nguồn kho lưu trữ bắt buộc nào ghi lại lịch sử đó. Việc lặp lại nó từ trí nhớ sẽ vi phạm hợp đồng tác giả ngay cả khi lịch sử bên ngoài sau này có thể hỗ trợ nó.
Những gì có thể được chứng minh là trục hiện tại: số 0 tại thời điểm đó, số giây dương sau nó và số giây âm trước nó. Cơ chế đó đủ để sử dụng trình chuyển đổi và phần mềm chẩn đoán. Một bài viết lịch sử trong tương lai nên bổ sung các nguồn chính đã được xem xét hoặc nguồn học thuật thay vì coi mã như bằng chứng của các cuộc họp thiết kế.
Kho lưu trữ không lấy nguồn thiết kế đồng hồ đầu tiên của Unix, do đó không có sự tái tạo lịch sử nào được xác nhận
ToolAcre đặt tên cho dấu thời gian Unix đầu vào của nó và xác định nó trong hướng dẫn lỗi là giây hoặc mili giây kể từ 1970-01-01 UTC. Nguồn tin không giải thích tại sao năm đó lại được chọn, liệu độ tròn có quan trọng hay không hay các nhà thiết kế mong muốn đường chân trời nào. Những động cơ đó vẫn bị bỏ qua.
Số học giải thích ích lợi lâu dài của một gốc cố định: phép trừ mang lại khoảng cách đã trôi qua, các thứ tự so sánh tức thời và một dấu hiệu cho biết giá trị nằm ở cạnh nào của số 0. Việc lựa chọn số 0 là thông thường; sự nhất quán giữa người sản xuất và người tiêu dùng là điều làm cho các con số có thể tương tác với nhau.
Sự khác biệt này giữ cho quy ước và hậu quả tách biệt. Phần mềm có thể tin tưởng vào hệ quả trong khi các nhà sử học tiếp tục đánh giá bằng chứng về nguồn gốc của quy ước.
Định nghĩa được triển khai sử dụng 1970; động cơ lựa chọn nó đòi hỏi các nguồn lịch sử không có ở đây
Mô hình kiểm tra hàng ngày giống như chuyển đổi POSIX và chuyển đổi rõ ràng từ `2016-12-31T23:59:59Z` sang `2017-01-01T00:00:00Z`. Đó là bằng chứng thực thi cho hành vi của công cụ này. Nó không phải là một trích dẫn về cách diễn đạt hoặc phạm vi đầy đủ của bất kỳ tiêu chuẩn bên ngoài nào.
Giữ các tuyên bố tiêu chuẩn khác biệt với các thử nghiệm triển khai. Một thử nghiệm chứng minh những gì một bản phát hành thực hiện theo các thiết bị cố định của nó; một tài liệu tiêu chuẩn xác định những gì hệ thống tuân thủ nên làm. Ở đây hợp đồng thực tế đủ rõ ràng để dự đoán sản lượng mà không cần bịa ra lịch sử chính thức hóa.
Thử nghiệm này cũng ngăn cản trình tái cấu trúc trong tương lai lặng lẽ chèn nhãn bước nhảy đặc biệt vào đầu ra. Khả năng tương thích có thể quan sát được được bảo vệ mà không phóng đại lý do tại sao quy ước tồn tại.
ToolAcre kiểm tra mô hình kiểu POSIX nhưng không đóng vai trò là trích dẫn tiêu chuẩn
JavaScript Ngày biểu thị số kỷ nguyên tính bằng mili giây, trong khi ToolAcre chấp nhận giây Unix và chuyển đổi chúng bằng cách nhân với 1,000. Tuyến đường cũng trả về cả hai hình thức. Ranh giới đó giải thích tại sao các ứng dụng web thường hiển thị cùng một thời điểm với ba số 0 thập phân bổ sung.
Kho lưu trữ không thể thiết lập trình tự thời gian mà cơ sở dữ liệu, thư viện C và các hệ sinh thái khác áp dụng các biểu diễn kỷ nguyên. Thay vì tường thuật một sự lan truyền không có nguồn, nó hiển thị đường nối khả năng tương tác hiện tại và gắn nhãn cho đơn vị được sử dụng. Đó là bằng chứng hữu ích cho các nhà phát triển đang làm việc ngày nay.
Sự kiềm chế đó tránh được lỗi nội dung quen thuộc: một chuỗi các cột mốc hợp lý được lặp lại mà không có trích dẫn cho đến khi người đọc sau này nhầm lẫn sự lặp lại tích lũy với bằng chứng tài liệu.
Bằng chứng kho lưu trữ cho thấy sự thể hiện mili giây của JavaScript, không phải toàn bộ lịch sử lan truyền
Một kỷ nguyên cố định không có vùng cục bộ. ToolAcre định dạng Ngày kết quả trong UTC và riêng biệt trong vùng cục bộ của trình duyệt. Các giá trị âm mở rộng trước 0, như thử nghiệm −1 chứng minh. Những hậu quả đó xảy ra trực tiếp từ trục số và lớp định dạng.
Việc triển khai cũng có phạm vi Ngày là ±8.64×10¹⁵ mili giây. Đó là giới hạn của cách biểu đạt đã chọn, không phải là giới hạn vốn có trong ý tưởng trừu tượng của một thời đại. Luôn xác định phạm vi và đơn vị của ai đang được thảo luận trước khi khái quát hóa từ kết quả chuyển đổi.
Trình định dạng cục bộ có thể áp dụng ngày trước hoặc sau ranh giới UTC tùy thuộc vào độ lệch. Cái đó không di chuyển về số 0; nó chỉ thay đổi phép chiếu lịch của con người.
Điều này không bao gồm những gì — các kỷ nguyên của hệ thống khác, chẳng hạn như 1900, 1601 và 1980, có lịch sử riêng
Các hệ thống khác có thể chọn một số 0 khác và một thang đo khác, đó là lý do tại sao một số nguyên lớn có thể vẫn vô nghĩa trong cả hai đơn vị ToolAcre. Bài viết này không kể lại lịch sử nguồn gốc 1900, 1601 hoặc 1980. Thay vào đó, bài viết 340 tập trung vào việc nhận ra sự không khớp đó và tạo ra các chuyển đổi từ các định nghĩa được ghi lại.
Khi không rõ nguồn gốc, hãy so sánh với tài liệu nguồn thay vì liên tục thay đổi số 0. Trình chuyển đổi Unix cố tình giả định 1970; nó không thể tự động xác định kỷ nguyên nước ngoài từ một số. Việc giữ nguyên gốc cùng với đơn vị sẽ ngăn cản thành công về mặt số học trở thành một sai lầm về ngữ nghĩa.
Nguồn gốc các kỷ nguyên khác được so sánh riêng biệt mà không nêu lịch sử của chúng tại đây
Bài học đáng tin cậy mang tính cơ học: Unix zero ánh xạ tới phần đầu của 1970 UTC, các dấu hiệu mở rộng xung quanh nó và số giây trở thành JavaScript mili giây trước khi định dạng Ngày. ToolAcre làm cho mỗi sự kiện đó có thể được quan sát bằng các giá trị 0, −1 và bảng kỷ nguyên đáng chú ý.
Lý do mọi người chọn quy ước đó thuộc về lịch sử có nguồn gốc chứ không phải suy luận từ mã hiện đại. Tôn trọng ranh giới đó sẽ tạo ra một câu chuyện ngắn hơn nhưng chân thực hơn. Sử dụng trình chuyển đổi cho số học; sử dụng tài liệu lịch sử thích hợp trước khi quy kết động cơ hoặc các cột mốc quan trọng.
Kỷ luật bằng chứng là một phần của độ chính xác kỹ thuật. Một thiếu sót chính xác sẽ cho người bảo trì biết chính xác nguồn cung ứng mới nào là cần thiết trước khi tài khoản lịch sử có thể mở rộng một cách có trách nhiệm.