Tiếng Việt

Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix

Kỷ nguyên micro giây và nano giây: rút ngắn các giá trị chữ số 16 và 19

· Cách thức hoạt động

dấu thời gian unix-time developer-workflow

Giá trị nano giây dài thu hẹp từ micro giây đến mili giây
Hình minh họa vector ToolAcre gốc

Một số thời gian chạy phát ra các kỷ nguyên tính bằng micro giây hoặc nano giây, mang lại các giá trị mười sáu hoặc mười chín chữ số mà trình chuyển đổi giây hoặc mili giây không thể đọc trực tiếp. Bài đăng này giải thích chúng đến từ đâu và cách rút ngắn chúng một cách an toàn.

Một số có mười chín chữ số trong dấu vết — đầu ra time.UnixNano được dán vào trình chuyển đổi và kết quả không có ý nghĩa

Trường theo dõi mười chín chữ số có thể là kỷ nguyên nano giây, nhưng việc dán nó trực tiếp vào trình chuyển đổi này không kiểm tra giả thuyết đó. ToolAcre chấp nhận giây hoặc mili giây. Lỗi phạm vi của nó thậm chí còn gợi ý rằng số lượng cơ sở dữ liệu quá lớn có thể sử dụng micro giây hoặc nano giây, hướng dẫn người dùng chuẩn hóa trước khi diễn giải.

Giữ lại văn bản gốc trong khi điều tra. Việc chuyển đổi nó thành Số JavaScript thông thường có thể thay đổi các chữ số bậc thấp trước khi xảy ra bất kỳ phép chia nào. Lược đồ, câu lệnh ghi nhật ký hoặc định nghĩa cột cơ sở dữ liệu của nhà sản xuất là bằng chứng tốt hơn độ dài trực quan, đặc biệt đối với các bộ đếm hoàn toàn không phải là kỷ nguyên Unix.

Bốn độ phân giải phổ biến — giây, mili giây, micro giây và nano giây, cùng với số chữ số của chúng cho ngày hiện tại

Giây tăng lên một lần mỗi giây, nhanh hơn mili giây một nghìn lần, micro giây một triệu lần và nano giây một tỷ lần. Vào khoảng thời gian hiện tại, chúng thường xuất hiện dưới dạng mười, mười ba, mười sáu và mười chín chữ số thập phân. Vấn đề “thường xuyên”: dấu hiệu tiêu cực, ngày sớm và phạm vi khoảng cách vi phạm quy tắc chỉ có chữ số.

Ngưỡng tự động của bảng điều khiển chỉ phân biệt giây với mili giây ở cường độ 10¹¹. Giá trị 16 chữ số micro giây vượt quá ranh giới đó và sẽ được coi là mili giây, thường vượt quá ngày dự định theo hệ số một nghìn. Chỉ chọn một đơn vị sau khi giảm độ phân giải không được hỗ trợ thành một tên tuyến đường.

Bốn nhãn độ phân giải là phổ biến, nhưng chỉ riêng số chữ số không phải là một hợp đồng định dạng

Bản phác thảo nêu tên một số API ngôn ngữ và sản phẩm lưu trữ, nhưng không có sản phẩm nào là tệp nguồn cho công cụ này. Thay vì giả định nhà sản xuất nào đã phát ra một trường, hãy kiểm tra tài liệu của nó. Hậu tố như `_us` hoặc `_ns`, độ chính xác được khai báo hoặc sự kiện liền kề đã biết cung cấp bằng chứng cho thấy độ rộng thập phân không thể.

Cũng phân biệt một kỷ nguyên với một khoảng thời gian đơn điệu. Bộ đếm có độ phân giải cao có thể đo thời gian kể từ khi bắt đầu hoặc khởi động quá trình và không liên quan đến 1970. Việc chia giá trị như vậy sẽ tạo ra bộ đếm nhỏ hơn chứ không phải ngày theo lịch. Xác nhận cả đơn vị và nguồn gốc trước khi đưa kết quả đến trình chuyển đổi kỷ nguyên.

Xác định giải pháp từ nhà sản xuất, không phải danh sách các nguồn phát được cho là

Để giảm micro giây xuống mili giây, hãy xóa hệ số 1,000; trong nano giây, hãy xóa 1,000,000. Phép chia số nguyên có chủ ý đặt độ chính xác dưới một phần nghìn giây sang một bên. Đối với giá trị dương, việc cắt bớt sẽ lấy số mili giây đứng đầu. Đối với phủ định, hãy chọn quy tắc làm tròn phù hợp với nhà sản xuất thay vì giả sử việc cắt chuỗi có ngữ nghĩa giống hệt nhau.

Thực hiện thao tác với văn bản thập phân hoặc BigInt khi độ chính xác quan trọng. Phép chia dấu phẩy động có thể bắt đầu từ một Số có mười chín chữ số đã được làm tròn. Giữ phần còn lại bị loại bỏ bên cạnh thời điểm được chuyển đổi nếu cuộc điều tra cần thứ tự sự kiện trong vòng một mili giây; ToolAcre không thể hiển thị sự khác biệt dưới một phần nghìn giây đó.

Ví dụ đã hoạt động: 1700000000123456789 — cắt bớt thành mili giây, đọc kết quả và ghi chú các chữ số dưới một phần nghìn giây mà bạn đặt sang một bên

Lấy `1738577696123456789` tính bằng nano giây. Hãy coi nó là văn bản thập phân, chia cho 1,000,000 bằng số học số nguyên và thu được 1,738,577,696,123 mili giây với phần còn lại là 456,789 nano giây. Nhập thương số mili giây một cách rõ ràng; số đọc ISO của nó là `2025-02-03T10:14:56.123Z`.

Phần còn lại không gây nhiễu: hai sự kiện theo dõi có thể chia sẻ mili giây được hiển thị đó trong khi khác nhau ở bên dưới nó. Lưu trữ các giá trị thô để đặt hàng và chỉ sử dụng đầu ra đã giảm cho định hướng của con người. Làm tròn đến 1,738,577,696,124 sẽ chuyển tức thời được hiển thị sang mili giây tiếp theo và ghi sai nguồn.

Việc phân chia chuỗi có thể được xem lại từng chữ số: sáu vị trí thập phân đã bị loại bỏ tương ứng chính xác với thang đo từ nano giây đến mili giây, trong khi tiền tố không được chạm tới vẫn là số đếm mang lịch.

Ví dụ đã hoạt động: giữ nguyên giá trị chữ số 19 dưới dạng văn bản trong khi giảm giá trị đó xuống mili giây

Bảo đảm số nguyên chính xác của JavaScript kết thúc ở mức thấp hơn nhiều so với các giá trị kỷ nguyên mười chín chữ số thông thường. Trình phân tích cú pháp của ToolAcre cuối cùng gọi `Number`, do đó, việc cung cấp văn bản nano giây thô qua bảng điều khiển không thể bảo toàn mọi chữ số. Bộ chọn đơn vị và giới hạn Ngày được hỗ trợ của nó không biến Số thành vùng chứa số nguyên nano giây.

Sử dụng BigInt hoặc đường dẫn tiền xử lý nhận biết chuỗi để giảm bớt, sau đó chuyển kết quả mili giây có kích thước an toàn. Trình tự này rất quan trọng: việc phân tích cú pháp thứ nhất và chia thứ hai có thể làm hỏng chính xác các chữ số mà bạn muốn giữ lại. Kết xuất lịch thành công không chứng minh được giá trị nguồn cấp thấp vẫn tồn tại.

Điều này không bao gồm - độ chính xác của đồng hồ, không liên quan đến độ phân giải: dấu thời gian nano giây vẫn có thể sai từng giây

Độ phân giải cho bạn biết cách biểu diễn có thể phân biệt các giá trị một cách tinh vi như thế nào; nó không cho bạn biết đồng hồ gần với thời gian vật lý đến mức nào. Trường nano giây có thể được lấy từ nguồn không chính xác, trong khi trường giây có thể được đồng bộ hóa tốt. Trình chuyển đổi không có phép đo chất lượng đồng hồ và không đưa ra tuyên bố như vậy.

Tương tự, các chữ số bổ sung có thể được đệm chính xác hơn là độ chính xác được đo. Để phân tích sự cố, hãy so sánh đồng hồ bằng bằng chứng đồng bộ hóa và so sánh thứ tự sự kiện bằng cách sử dụng bộ đếm tài liệu thô. Việc chuyển đổi lịch chỉ cung cấp khả năng đọc. Không suy ra độ chính xác từ đuôi thập phân dài hoặc từ ba mili giây được hiển thị trong ISO.

Bài học rút ra: trước tiên giảm xuống mili giây, sau đó chuyển đổi - và cách trình chuyển đổi dấu thời gian Unix đọc giá trị rút gọn với đơn vị đã nêu

Giảm độ phân giải không được hỗ trợ trước khi chuyển đổi, giữ nguyên bản gốc và nêu rõ phần còn lại bị loại bỏ. ToolAcre sau đó có thể thực hiện những gì hợp đồng hứa hẹn: đọc số giây hoặc mili giây kết quả và hiển thị các biểu mẫu UTC, cục bộ và ISO với đơn vị được chọn hiển thị.

Nếu ngày được chuẩn hóa vẫn không có ý nghĩa, hãy xem lại nguồn gốc thay vì xóa đi xóa lại các chữ số. Bộ đếm kể từ khi khởi động, một kỷ nguyên khác hoặc mã hóa không có giấy tờ đều có thể sai ở mọi quy mô. Đơn vị, nguồn gốc và độ chính xác số nguyên là những câu hỏi riêng biệt; trả lời cả ba trước khi tin tưởng vào một ngày mà con người có thể đọc được.

Bộ chọn đơn vị rõ ràng rất quan trọng sau khi giảm vì tính năng phát hiện tự động chỉ là mặc định. Việc chọn mili giây sẽ ghi lại quyết định tiền xử lý thay vì yêu cầu phương pháp phỏng đoán cường độ để khám phá lại quyết định đó.