Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix
Không phải mọi kỷ nguyên đều là 1970: NTP, Windows FILETIME, GPS và các ngày trong Excel
· Lý lịch
dấu thời gian data-formats gỡ lỗi
Nguồn gốc 1970 của Unix chỉ là một trong số rất nhiều nguồn gốc. Bài đăng này khảo sát các kỷ nguyên mà bạn sẽ gặp trong các tệp và giao thức (1900, 1601, 1904, 1980, 2001) và chỉ ra cách nhận biết một giá trị chưa bao giờ có trong thời gian Unix.
Dấu thời gian đã đến 1900 — một giá trị từ quá trình chụp mạng mà không lựa chọn đơn vị nào có thể hiểu được
Một số từ quá trình chụp gói có thể tạo ra vô nghĩa trong cả giây và mili giây vì đơn vị không phải là tham số ẩn duy nhất. Kỷ nguyên có nghĩa là điểm 0 được chọn; Unix sử dụng 1970, trong khi giao thức khác có thể được tính từ một nơi khác. Việc thay đổi kích thước không thể sửa chữa sai nguồn gốc.
Khi cả hai chỉ số ToolAcre xung đột với thời gian sự kiện đã biết, hãy dừng chuyển đổi. Xác định tên trường, nhà sản xuất, phiên bản giao thức và nguồn gốc được ghi lại. Việc cắt bớt các chữ số liên tục cho đến khi xuất hiện một năm hợp lý sẽ biến cuộc điều tra thành sự trùng hợp ngẫu nhiên.
Chẩn đoán tương tự cũng được áp dụng khi một ngày hợp lý xuất hiện nhưng xung đột với các sự kiện xung quanh. Tính hợp lý là một sự kiểm tra yếu kém; nguồn gốc và sự kiện tham chiếu đã biết mạnh hơn.
NTP và 1900 — giây kể từ 1900-01-01 với phân số 32-bit và 2036 chuyển đổi mà nó mang lại
Sổ làm việc đã cung cấp nguồn gốc của NTP, bố cục phân số và ngày chuyển hạn. Không có gì được triển khai hoặc thử nghiệm trong trình chuyển đổi Unix, vì vậy bài viết này không chứng nhận những chi tiết cụ thể đó. Việc chụp mạng phải được giải mã theo tài liệu giao thức được người gửi và trình phân tích cú pháp sử dụng.
Chỉ sau khi lấy được giây Unix thì giá trị mới được nhập vào công cụ này. Giữ bối cảnh thời đại hoặc di chuột qua vì một trường có chiều rộng cố định có thể không xác định riêng nó. Kết quả UTC được đánh bóng từ một thời đại giả định có thể nhất quán bên trong nhưng lại sai về bên ngoài.
Các trường giao thức cũng có thể phân chia các thành phần toàn bộ và phân số. Việc ghép nối hoặc thập phân hóa chúng mà không có thang đo được chỉ định sẽ tạo ra một số mới mà không có bộ giải mã tuân thủ nào mong muốn.
NTP chi tiết chuyển đổi và hành vi di chuột qua yêu cầu tài liệu nguồn không có ở đây
Tương tự, các bộ đếm Windows và .NET có tên không được chấp nhận. Kho lưu trữ không chứa các hằng số về nguồn gốc hoặc thang đánh dấu của chúng. Giá trị thập phân lớn của chúng có thể vượt quá phạm vi số nguyên chính xác của JavaScript trước khi nhà phát triển thử chuyển đổi.
Sử dụng thư viện an toàn số nguyên dựa trên định nghĩa tài liệu của nền tảng, giữ nguyên bản gốc dưới dạng văn bản hoặc số nguyên rộng, sau đó phát ra giá trị Unix. Không trừ phần bù đã nhớ trong dấu phẩy động. Độ chính xác ở mức thấp rất quan trọng khi độ phân giải nguồn tốt hơn mili giây.
Kiểm tra khứ hồi phải bao gồm một giá trị có các chữ số dưới giây khác 0. Lịch cố định cả giây không thể hiển thị liệu phần còn lại 100 nano giây hoặc mili giây có được giữ nguyên chính xác hay không.
Các định nghĩa FILETIME và .NET không được ToolAcre triển khai và không được xác nhận từ bộ nhớ
Ngày tháng trong bảng tính giới thiệu một cách trình bày khác: một dãy số được diễn giải bằng cài đặt hệ thống ngày tháng của sổ làm việc. Yêu cầu không chính xác 1900 của sổ làm việc và máy Mac cũ hơn yêu cầu các nguồn bảng tính và không được thiết lập ở đây. ToolAcre không đọc siêu dữ liệu sổ làm việc.
Kiểm tra tệp bằng công cụ nhận biết bảng tính, xác định hệ thống ngày được định cấu hình và duy trì độ chính xác theo phân số ngày bằng thư viện đó. Việc coi một chuỗi là giây Unix có thể tạo ra ngày 1970 sớm trông giống như một lỗi quy mô thông thường trong khi vấn đề thực tế là nguồn gốc và đơn vị cùng nhau.
Cài đặt sổ làm việc có thể di chuyển cùng với một tệp, do đó, hai sê-ri tương tự về mặt hình ảnh có thể sử dụng nguồn gốc khác nhau. Chuyển đổi thuộc về ranh giới tài liệu nơi siêu dữ liệu đó có sẵn.
Các hệ thống nối tiếp của bảng tính và các vấn đề yêu cầu bằng chứng cụ thể về bảng tính
GPS và các kỷ nguyên liên quan đến Apple có tên trong đề cương cũng nằm ngoài phạm vi triển khai. Mối quan hệ của chúng có thể liên quan đến các quy ước về quy mô ngoài sự thay đổi nguồn gốc không đổi. Không có công thức bù đắp hoặc chuyển đổi hiện tại nào được công bố ở đây mà không có bằng chứng xác thực.
Chẩn đoán chung vẫn chuyển: xác định số 0, thời lượng đánh dấu và quy ước nhảy vọt từ nhà sản xuất. Sau đó chuyển đổi bằng thư viện thích hợp và xác minh dựa trên dấu thời gian đã biết từ cùng một tập dữ liệu. Ba sự kiện độc lập sẽ an toàn hơn việc đoán theo độ rộng thập phân.
Sự thận trọng đó đặc biệt quan trọng đối với các quy ước nhảy vọt. Một hằng số hoạt động cho một thang đo và ngày tháng có thể không phải là mối quan hệ vượt thời gian giữa mọi cặp hệ thống.
GPS và các mối quan hệ kỷ nguyên của Apple yêu cầu các nguồn có thẩm quyền bên ngoài mô-đun này
Ví dụ: một phương thức hoạt động có thể bảo vệ bắt đầu bằng một thời điểm đã biết ToolAcređã được xác minh `2025-02-03T10:23:00.000Z`, bằng 1,738,578,180 giây Unix. Đối với một kỷ nguyên được ghi lại khác, hãy tính giá trị của nó bằng cách sử dụng gốc và tỷ lệ chính thức của hệ thống đó với số học số nguyên, sau đó chuyển đổi lại bằng cách sử dụng định nghĩa tương tự.
So sánh chuyến đi khứ hồi với chuỗi Unix ISO và giữ lại đạo hàm. Bài viết này cố ý không điền vào bảng 5 kỷ nguyên các hằng số chưa được đọc. Phương pháp này đưa ra mọi giả định và có thể được xem xét dựa trên bất kỳ giao thức hoặc định dạng tệp nào thực sự tạo ra dữ liệu.
Phương pháp đã hoạt động: lấy được một tức thời trên các kỷ nguyên được ghi lại thay vì xuất bản các hằng số chưa được xác minh
ToolAcre không tự động nhận dạng hoặc chuyển đổi các kỷ nguyên nước ngoài. Menu đơn vị của nó cho biết giây và mili giây, cả hai đều theo định nghĩa Unix trong cấu hình. Tính năng phát hiện tự động chỉ chọn giữa các thang đo đó ở cường độ 10¹¹; nó không bao giờ thay đổi điểm 0.
Hợp đồng hẹp đó ngăn chặn sự tự tin sai lầm. Nếu số lượng nước ngoài xảy ra vào một ngày Unix hợp lý, trình chuyển đổi không thể cảnh báo rằng nguồn gốc là sai. Xuất xứ phải nhập trước số học. Ghi lại sự chuyển đổi trong mã thay vì dựa vào sổ tay chạy thủ công.
Nhãn tự động hiển thị chỉ báo cáo giây hoặc mili giây. Nó không bao giờ nên được trích dẫn làm bằng chứng cho thấy việc phát hiện nguồn gốc đã xảy ra, bởi vì không có nhánh nào như vậy tồn tại trong nguồn.
Bài học rút ra: biết bạn đang đếm từ số 0 nào - và cách trình chuyển đổi dấu thời gian Unix cho bạn biết rõ ràng rằng nó đọc giây hoặc mili giây của Unix
Biết bạn đang đếm từ số 0 nào, một tích tắc lớn như thế nào và nguồn xử lý thang thời gian của nó như thế nào. Trình chuyển đổi Unix chỉ trả lời sau khi các câu hỏi đó được giải quyết thành giây hoặc mili giây kể từ 1970 UTC. Nó không thể suy ra ngữ nghĩa từ một số nguyên.
Sử dụng các số đọc kép không hợp lý làm tín hiệu để điều tra nguồn gốc, chứ không phải để cho phép tiếp tục thử các ước số. Khi chuyển đổi có nguồn gốc tạo ra giá trị Unix, ToolAcre cung cấp UTC kiểm tra độ chính xác cục bộ và độc lập hữu ích trong khi vẫn hiển thị giả định của chính nó.
Một bộ chuyển đổi tốt sẽ đặt tên cho loại ngoại, thực hiện một phép biến đổi có nguồn gốc và phát ra một giá trị Unix có thương hiệu. Thiết kế đó ngăn chặn các bộ đếm thô rò rỉ vào các hàm tạo ngày chung.