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

Ý nghĩa của Z: UTC, độ lệch và chỉ định trong ISO 8601 dấu thời gian

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

dấu thời gian iso-8601 time-zones

Hai đường dẫn ngày-giờ với Z và người chỉ định offset gặp nhau ngay lập tức
Hình minh họa vector ToolAcre gốc

Bộ chuyển đổi và API in tức thời dưới dạng chuỗi ISO 8601 và dấu Z ở cuối hoặc phần bù là phần mà mọi người bỏ qua. Bài đăng này giải thích từng phần định dạng để bạn có thể đọc UTC và đầu ra cục bộ một cách chính xác.

Hai chuỗi, một tức thì — 10:00:00Z và 12:00:00+02:00 cạnh nhau và người đọc cho rằng chúng cách nhau hai giờ

`2025-02-03T10:00:00Z` và `2025-02-03T12:00:00+02:00` đặt tên ngay lập tức. Chuỗi thứ hai hiển thị đồng hồ treo tường phía trước hai giờ và cung cấp độ lệch cần thiết để trừ đi số giờ đó. Chỉ đọc trường giờ sẽ tạo ra một khoảng cách hư cấu giữa các sự kiện xảy ra đồng thời.

ToolAcre chuyển cả hai chuỗi cho Ngày và trả về giây kỷ nguyên, mili giây kỷ nguyên và chuỗi UTC ISO chuẩn. Kết quả số bằng nhau là sự so sánh mang tính quyết định. Mặt đồng hồ thay đổi không có nghĩa là thời gian đã trôi qua đã thay đổi khi người chỉ định ở cuối giải thích sự khác biệt.

Quy trình so sánh an toàn là chuẩn hóa từng chuỗi thành epoch mili giây trước tiên. Nếu các số nguyên đó khớp nhau, sự khác biệt rõ ràng về đồng hồ là biểu diễn chứ không phải thời gian đã trôi qua.

Cấu trúc của ISO 8601 ngày giờ — ngày, dấu phân tách chữ T, thời gian, phân số giây và chỉ định vùng

Giá trị ISO được tạo bởi công cụ này có ngày theo lịch, `T`, các trường giờ-phút-giây, phân số mili giây gồm ba chữ số và theo sau `Z`. Hình dạng chính xác này đến từ `toISOString()`. Việc xử lý đầu vào rộng hơn vì Ngày phân tích chuỗi được cung cấp nhưng thông báo lỗi đề xuất một giá trị rõ ràng, chẳng hạn như `2024-03-01T09:30:00Z`.

Dấu phân cách làm cho các bộ phận trở nên dễ đọc; người chỉ định thiết bị đầu cuối thực hiện việc xác định ngay lập tức. Phân số sẽ tinh chỉnh vị trí trong vòng một giây mà không thay đổi vùng. Khi so sánh đầu ra API, hãy giữ nguyên chỉ định cuối cùng. Cắt bớt ảnh chụp màn hình trước khi xóa thông tin cần thiết để ánh xạ đồng hồ tới UTC.

Z dành cho Zulu — tại sao Z có nghĩa là UTC, nguồn gốc của nó theo múi giờ quân sự và hàng không và tại sao nó không giống với không có người chỉ định

Trong quá trình triển khai này, `Z` được phát hiện dưới dạng vùng rõ ràng và `toISOString()` sử dụng nó cho UTC. Tài khoản có nguồn gốc quân sự của sổ làm việc không được ghi lại trong kho lưu trữ, vì vậy bài viết này không lặp lại dưới dạng lịch sử có nguồn gốc. Thực tế thực tế hẹp hơn và có thể kiểm chứng được: chữ Z ở cuối ngăn cản việc giả định giờ địa phương.

Không có chỉ định nào không phải là một cách viết khác của Z. ToolAcre đặt `assumedLocal` cho thời gian ngày thiếu Z hoặc phần bù số, sau đó cho người dùng biết vùng trình duyệt nào cung cấp thông dịch. Việc thay thế hậu tố bị thiếu bằng Z sẽ thay đổi thời điểm dự định bất cứ khi nào đồng hồ ban đầu được coi là cục bộ.

Trong trình chuyển đổi này, Z đánh dấu dạng UTC; lịch sử đặt tên của nó là bằng chứng bên ngoài kho lưu trữ

Hậu tố như `+02:00` ghi lại sự khác biệt giữa đồng hồ được ghi và UTC tại thời điểm đó. Nó không xác định một thành phố. Nhiều khu vực có thể chia sẻ khoản chênh lệch và một khu vực có thể sử dụng khoản chênh lệch khác vào một ngày khác. Sợi dây bảo toàn cách đọc chứ không phải các quy tắc chính trị đã tạo ra nó.

Hạn chế đó quan trọng trong lịch trình định kỳ. API có thể báo cáo trung thực một thời điểm trong quá khứ với `+02:00`, tuy nhiên chỉ riêng hậu tố đó không thể tính toán cuộc họp 09:00 vào mùa đông tới. Chuyển đổi kỷ nguyên chỉ cần phần bù được cung cấp; việc lập kế hoạch thời gian treo tường trong tương lai cần có một vùng được đặt tên và logic nhận biết quy tắc bên ngoài bảng này.

Ví dụ hoạt động: một kỷ nguyên, hai số đọc — giá trị UTC và giá trị cục bộ mà trình chuyển đổi hiển thị, đồng thời xác nhận chúng đặt tên giống nhau ngay lập tức

Sử dụng kỷ nguyên 1,738,577,600 giây để kiểm tra bài viết này. Trình chuyển đổi hiển thị `2025-02-03T10:00:00.000Z`. Chuỗi nguồn `2025-02-03T12:00:00+02:00` chuyển đổi về cùng một số lượng vì số đọc trên tường hai giờ sau của nó được cân bằng bằng độ lệch dương hai giờ.

Hàng cục bộ của trình duyệt có thể hiển thị thời gian đồng hồ thứ ba. Điều đó không tạo ra sự kiện thứ ba; đó là một định dạng khác vượt qua 1,738,577,600,000 mili giây. Xác minh danh tính bằng giây hoặc ISO, sau đó chỉ sử dụng từng đồng hồ được gắn nhãn cho đối tượng có khu vực mà nó đại diện.

Sự đẳng thức này cũng có thể trở thành một bản cố định hồi quy: phân tích cả hai chuỗi nguồn và xác nhận một giá trị kỷ nguyên. Bài kiểm tra đó bảo vệ số học bù đắp mà không ghim văn xuôi hiển thị phụ thuộc vào ngôn ngữ.

Công cụ chỉ định bị thiếu — 2024-05-01T10:00:00 trần trụi là không rõ ràng và cách các ngôn ngữ khác nhau diễn giải nó

Trường hợp thiếu chỉ định cần một sàng lọc. Ngày trống chẳng hạn như `2025-02-03` được đọc là UTC theo quy tắc ECMAScript được triển khai và thử nghiệm tại đây. Ngày giờ trần như `2025-02-03T10:00:00` được đọc dưới dạng cục bộ và được gắn cờ. Gọi cả hai đơn giản là “mơ hồ” sẽ mâu thuẫn với mã.

Hình thức an toàn thực tế cho một trao đổi tức thời vẫn bao gồm Z hoặc phần bù. Ngày giờ cục bộ có thể được cố ý khi được nhập thông qua điều khiển `datetime-local` của bảng điều khiển, nhưng hãy sao chép chuỗi ISO kết quả trước khi chia sẻ. Chuyển đổi đó ghi lại môi trường hiện tại được lấy từ đồng hồ treo tường.

Trình chỉ định bị thiếu không phải lúc nào cũng mơ hồ: việc triển khai này phân biệt ngày và giờ

ISO 8601 bao gồm nhiều ký hiệu hơn trình chuyển đổi này trình bày, nhưng kho lưu trữ không cung cấp trình phân tích cú pháp hoặc kiểm tra khoảng thời gian, khoảng thời gian hoặc ngày trong tuần. Ngày chấp nhận có thể khác nhau tùy theo nền tảng đối với các chuỗi nằm ngoài các ví dụ được ghi lại đáng tin cậy của nó. Do đó, bài viết này tránh trình bày bảng này dưới dạng trình xác thực ngữ pháp ISO chung.

Nếu hợp đồng API cho phép biểu mẫu ngày chuyên biệt, hãy xác thực hợp đồng đó bằng trình phân tích cú pháp của API đó. Đường dẫn ngày đến kỷ nguyên của ToolAcre phù hợp với ngày giờ rõ ràng và hình dạng bộ chọn cục bộ mà nó phát ra. Phân tích ngày thành công chứng tỏ trình duyệt này đã chấp nhận một chuỗi chứ không phải mọi người tiêu dùng tuân thủ tiêu chuẩn đều phải chấp nhận chuỗi đó.

Thời lượng, khoảng thời gian và ngày trong tuần nằm ngoài phạm vi đầu vào được chấp nhận được trình bày ở đây

Đọc hết dấu thời gian đến hậu tố của nó trước khi so sánh các trường đồng hồ. Z neo đồng hồ đã ghi vào UTC; phần bù số cung cấp số học trở lại UTC; ngày giờ không có vùng yêu cầu trình duyệt sử dụng cách diễn giải cục bộ. Những phần cuối này trả lời các câu hỏi khác nhau mặc dù các tiền tố trông giống nhau.

Trình chuyển đổi gắn nhãn đầu ra chung được tạo ra và báo cáo khi nó giả sử giờ địa phương. Sử dụng những thông báo đó như một phần của kết quả chứ không phải để trang trí. Giá trị giờ được sao chép mà không có người chỉ định là bằng chứng không đầy đủ, trong khi một hàng kỷ nguyên hoặc chuẩn ISO giữ nguyên giá trị tức thời đối với các độc giả.