Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix
Giây nhuận và thời gian Unix: tại sao kỷ nguyên giả vờ như chúng không tồn tại
· Lý lịch
dấu thời gian unix-time time-zones
UTC đã chèn số giây nhuận kể từ 1972, nhưng thời gian Unix đơn giản là không tính chúng, điều đó có nghĩa là một số giây đã xảy ra hai lần. Bài đăng này giải thích lý do tại sao, bôi nhọ là gì và tại sao toàn bộ quá trình thực hành dự kiến kết thúc.
Lần thứ hai xảy ra hai lần — 23:59:60 trong một hệ thống, 23:59:59 lặp lại trong hệ thống khác và lỗi khóa trùng lặp vào lúc nửa đêm
ToolAcre không thể tạo ra hàng ISO kết thúc bằng `23:59:60`. Thử nghiệm của nó đặt tên cho ranh giới giây nhuận và dự kiến một giá trị kỷ nguyên sẽ được định dạng là `2016-12-31T23:59:59.000Z` và giá trị tiếp theo là `2017-01-01T00:00:00.000Z`. Không có thêm giây hiển thị nào giữa chúng.
Thực tế đó có thể ảnh hưởng đến các nhật ký có nguồn bên ngoài sử dụng quy ước khác, nhưng kho lưu trữ này không chứa bằng chứng về sự cố khóa trùng lặp. Nếu các nhãn lặp lại xuất hiện trong hệ thống, hãy kiểm tra đồng hồ và đường dẫn lưu trữ đó thay vì tự động gán chúng cho trình chuyển đổi.
Do đó, một hệ thống yêu cầu một nhãn duy nhất cho mỗi giây vật lý cần nhiều ngữ cảnh hơn so với ánh xạ Unix-to-Date này. Trình chuyển đổi không thể tạo ra nhãn mà mô hình của nó bỏ qua.
ToolAcre chứng tỏ không có người đại diện 23:59:60; nó không ghi lại các sự cố khóa trùng lặp
Đề cương giải thích thời gian nguyên tử, vòng quay của Trái đất và ngưỡng dung sai. Những tuyên bố khoa học và tiêu chuẩn đó không được thiết lập bằng mã dấu thời gian hoặc các thử nghiệm. Chúng được cố tình bỏ qua thay vì được diễn giải theo trí nhớ. Cơ chế ở đây không chứng minh được lý do đằng sau chính sách chấm công toàn cầu.
Để sử dụng tuyến đường này, bằng chứng cần thiết đơn giản hơn: Ngày và đầu ra ISO hiển thị các nhãn thứ hai thông thường và kỷ nguyên kiểu POSIX vượt qua ranh giới được thử nghiệm. Cách xử lý có nguồn gốc của quản trị bước nhảy vọt sẽ yêu cầu tài liệu có thẩm quyền vượt ra ngoài các đường dẫn kho lưu trữ được phép.
Ranh giới này rõ ràng hơn là lảng tránh: các bài kiểm tra phần mềm trả lời các câu hỏi mang tính biểu diễn, trong khi lịch sử khoa học cần tài liệu được viết cho mục đích đó và được xem xét theo các điều kiện riêng của nó.
Cơ sở lý luận vật lý cho giây nhuận yêu cầu các nguồn bên ngoài kho lưu trữ này
Mô hình được triển khai hoạt động như thể các ngày dân sự trên trục của nó có 86,400 giây Unix được đánh số. Các số nguyên đầu vào liên tiếp khác nhau một giây, bao gồm cả ranh giới năm 2016. `fromEpoch` nhân mỗi giá trị với 1,000 và Ngày định dạng số mili giây kết quả.
Gọi giây nhuận là "bỏ qua" này mô tả đầu ra có thể quan sát được: không có giá trị Unix duy nhất nào ánh xạ tới nhãn `:60`. Nó không có nghĩa là mọi đồng hồ của máy đều chạy giống hệt nhau trong quá trình chèn thực. Trình chuyển đổi chấp nhận số đếm; nó không lấy mẫu hoặc xử lý đồng hồ máy chủ.
Số học trên các phạm vi lớn hơn tuân theo cùng một quy ước, do đó, việc trừ hai giá trị Unix sẽ đo sự khác biệt về số kiểu POSIX của chúng thay vì xây dựng lại các nhãn bước nhảy bị bỏ qua.
Chuyển đổi được thử nghiệm không có nhãn giây nhuận giữa các giá trị kỷ nguyên liên tiếp
Hệ thống có thể áp dụng các bước, lặp lại hoặc bôi nhọ, nhưng kho lưu trữ không xác định nhà cung cấp nào sử dụng phương pháp nào, trong khoảng thời gian nào hoặc với công thức nào. Việc xuất bản những chi tiết đó mà không có bằng chứng trực tiếp sẽ tạo ra độ chính xác nguy hiểm về mặt vận hành. Do đó, bài viết này không đưa ra hứa hẹn về đồng hồ dành riêng cho nền tảng nào.
Nếu các sự kiện gần ranh giới bước nhảy có vấn đề, hãy lưu giữ tài liệu đồng hồ và giá trị thô của nguồn. Hai hệ thống có cách xử lý khác nhau có thể không đồng nhất ngay cả sau khi cả hai giá trị được định dạng là UTC. Chỉ riêng việc chuyển đổi không thể dung hòa hành vi lấy mẫu của chúng hoặc khôi phục sự khác biệt về thang đo bị bỏ sót.
Lựa chọn của thời gian chạy cũng có thể ảnh hưởng đến thứ tự tồn tại trong thời gian ngắn xung quanh sự kiện. Bảo toàn các bộ đếm đơn điệu hoặc dữ liệu trình tự theo nguồn cụ thể khi sự khác biệt đó có ý nghĩa quan trọng trong hoạt động.
Hành vi theo bước đồng hồ và bôi nhọ là dành riêng cho nền tảng và chưa được xác minh tại đây
Nhập 1,483,228,799 giây: kết quả ISO đã xác minh là `2016-12-31T23:59:59.000Z`. Tăng giá trị đầu vào một lần thành 1,483,228,800: kết quả là `2017-01-01T00:00:00.000Z`. Trừ các số nguyên sẽ bằng một, khớp với tiến trình được hiển thị trong mô hình này.
Các hàng cục bộ có thể hiển thị các ngày hoặc khoảng chênh lệch khác nhau tùy thuộc vào trình duyệt, nhưng chúng xuất phát từ cùng một thời điểm đó. Sử dụng các hàng ISO để kiểm tra ranh giới. Thay đổi vùng cục bộ không liên quan đến việc nhãn giây nhuận có tồn tại hay không.
Cặp này là một phép thử hồi quy hữu ích vì không có sự phụ thuộc miền địa phương trong chuỗi ISO. Nó trực tiếp khóa hành vi của trình chuyển đổi ở cạnh liên quan.
Ví dụ đã hoạt động: ranh giới 2016 đã được thử nghiệm của kho lưu trữ
Sổ làm việc đề cập đến giải pháp 2022 và thời hạn trong tương lai. Không có tiêu chuẩn hoặc nguồn chính sách nào là một phần của bằng chứng thực hiện nên cả ngày tháng và dự báo đều không được khẳng định ở đây. Chính sách chấm công có thể thay đổi và xứng đáng được trích dẫn chính thức tại thời điểm xuất bản.
Việc bỏ qua tuyên bố đó không làm suy yếu hướng dẫn phần mềm. Dữ liệu hiện tại vẫn cần ghi lại tỷ lệ, đơn vị và nguồn đồng hồ. Hành vi hiện tại của người chuyển đổi vẫn có thể kiểm tra được một cách độc lập với các quyết định về thực tiễn thời gian dân sự trong tương lai.
Người bảo trì có thể thêm ngữ cảnh chính sách sau bằng cách trích dẫn trực tiếp giải pháp. Cho đến lúc đó, việc loại trừ thời hạn sẽ chính xác hơn việc xuất bản một bảo đảm trong tương lai không được hỗ trợ.
Các nghị quyết chính sách trong tương lai bị bỏ qua mà không có nguồn đáng tin cậy
TAI, GPS và các thang đo khác có thể biểu thị thời gian theo cách khác, nhưng ToolAcre không cung cấp bộ chọn hoặc bảng bù cho chúng. Việc dán số đếm như số giây Unix chỉ áp dụng cách giải thích kiểu 1970 POSIX. Một kết quả có thể đọc được vẫn có thể sai về mặt ngữ nghĩa.
Chuyển đổi các thang đo khác bằng một nguồn xác định nguồn gốc và mối quan hệ của chúng vào thời điểm thích hợp, sau đó kiểm tra giá trị Unix thu được. Không thêm một hằng số đã ghi nhớ: các mối quan hệ liên quan đến lịch sử bước nhảy chính xác là nơi số học không có nguồn gốc trở nên dễ vỡ.
Sự vắng mặt của chế độ hiển thị trong ba tùy chọn đơn vị của giao diện người dùng. Không thay đổi thang thời gian; tự động chỉ chọn giữa hai độ phân giải Unix.
Các thang thời gian khác nằm ngoài khả năng triển khai của trình chuyển đổi Unix này
Đối với trình chuyển đổi này, quy tắc đã xác minh là một bước trực tiếp từ 23:59:59 đến 00:00:00 tại ranh giới được kiểm tra. Mô hình đó hỗ trợ số học kỷ nguyên thông thường và giải thích tại sao không có kết quả `:60` nào xuất hiện. Nó không chứng nhận cách đồng hồ hệ điều hành hoạt động trong khi ranh giới thực sự được vượt qua.
Khi xử lý độ chính xác gần như bước nhảy vọt là vấn đề quan trọng thì việc chuyển đổi là bước trình bày cuối cùng chứ không phải là nguồn bằng chứng. Trước tiên, hãy thu thập tài liệu về thang đo đồng hồ, hành vi đồng bộ hóa và các trường sự kiện thô. ToolAcre sau đó có thể hiển thị ý nghĩa của số lượng Unix được khai báo theo mô hình đã thử nghiệm của nó.
Đối với các nhật ký thông thường nằm ngoài ranh giới bước nhảy, sắc thái này hiếm khi thay đổi hiển thị. Tuy nhiên, ở gần các ranh giới nhạy cảm, việc đặt tên cho mô hình sẽ ngăn chặn những tuyên bố sai lầm về độ trung thực của giây vật lý.