Bộ chuyển đổi dấu thời gian Unix Epoch miễn phí

Chuyển đổi giữa timestamp Unix (giây/mili giây) và ngày dễ đọc. Hiển thị giờ địa phương, UTC, ISO 8601 và thời gian tương đối. Phát hiện tự động định dạng của timestamp.

Dữ liệu của bạn không bao giờ rời khỏi thiết bị của bạn
Timestamp Unix hiện tại (cập nhật trực tiếp)
0

Timestamp → Ngày

Giờ địa phương
-
Giờ UTC
-
ISO 8601
-
Thời gian tương đối
-

Ngày → Timestamp

Timestamp (giây)
-
Timestamp (mili giây)
-

Thời gian Unix (epoch) là gì?

Thời gian Unix (cũng gọi là POSIX) là cách chuẩn để đại diện thời gian trong tin học. Nó đếm số giây (hoặc mili giây) đã trôi qua kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC. Số duy nhất này tạo điều kiện cho việc lưu trữ, so sánh và tính các chênh lệch thời gian giữa các hệ thống và các múi giờ khác nhau.

Lựa Chọn 1 Tháng 1 Năm 1970: và Các Epoch Khác

Epoch 1970-01-01 có nguồn gốc từ những ngày đầu của Unix tại Bell Labs. Kiểu time_t của Unix ban đầu là một số nguyên có dấu 32-bit đếm số giây từ một mốc cơ sở được chọn; nhóm chọn ngày Năm Mới gần nhất trước khi quá trình phát triển bắt đầu, đó là 1 tháng 1 năm 1970. Quyết định này mang tính thực tế, không phải triết học: Unix đang được phát triển vào 1969-1971, và một epoch gần đây tối đa hóa phạm vi timestamp có thể sử dụng trong phạm vi có dấu 32-bit. Các hệ thống khác chọn các epoch khác phù hợp với các trường hợp sử dụng của họ. NTP (Network Time Protocol, RFC 5905) sử dụng 1 tháng 1 năm 1900 làm epoch của nó: quan trọng vì NTP cần bao quát các phạm vi lịch sử dài hơn. Windows FILETIME sử dụng 1 tháng 1 năm 1601 làm epoch tick 100-nanosecond (bắt đầu chu kỳ Gregorian 400 năm bao gồm 1601). VAX/VMS sử dụng 17 tháng 11 năm 1858 (epoch Julian Day đã sửa đổi, phổ biến trong thiên văn học). Mac classic sử dụng 1 tháng 1 năm 1904. JavaScript Date sử dụng epoch Unix nhưng đếm milliseconds thay vì giây (một số float 64-bit, cho ±100 triệu năm phạm vi có thể sử dụng). Điểm rút ra: epoch Unix chiếm ưu thế vào năm 2026, nhưng hồ sơ lịch sử chứa nhiều lựa chọn khác, mỗi lựa chọn đều có di sản tương thích ngược của riêng nó.

Vấn Đề Y2K38: Thời Gian Unix Sẽ Hết (Một Phần)

Nếu time_t là số nguyên có dấu 32-bit (thiết kế Unix ban đầu), timestamp tối đa có thể biểu diễn là 2.147.483.647: tương ứng với 03:14:07 UTC vào Thứ Ba, 19 tháng 1 năm 2038. Một giây sau đó, giá trị tràn về âm, vòng lại 13 tháng 12 năm 1901. Đây là vấn đề Y2K38 (còn được gọi là Epochalypse). Trên các hệ thống 64-bit hiện đại, time_t là số nguyên có dấu 64-bit và ngày tràn là 4 tháng 12 năm 292.277.026.596: thoải mái sau cái chết của mặt trời. Nhưng các hệ thống nhúng 32-bit vẫn được triển khai tích cực trong các bộ điều khiển công nghiệp, vệ tinh với các nhiệm vụ dài, hệ thống back-end ngân hàng, mạng SCADA dầu khí, infotainment ô tô và cảm biến IoT với tuổi thọ thiết kế nhiều thập kỷ. Việc giảm thiểu đã diễn ra từ đầu những năm 2000: mọi OS, cơ sở dữ liệu và ngôn ngữ chính hiện mặc định là thời gian 64-bit trên phần cứng 64-bit (Linux hoàn thành quá trình chuyển đổi trong kernel 5.6, tháng 3 năm 2020; Windows luôn sử dụng 64-bit; macOS Catalina ngừng hỗ trợ 32-bit vào năm 2019). Các hệ thống nhúng là cái đuôi dài. Vấn đề Y2K38 sẽ không phải là một cuộc khủng hoảng một ngày như Y2K; nó sẽ là một loạt các thất bại nhỏ trong các hệ thống đuôi dài trong những năm tiếp cận năm 2038, chính xác cách Y2K biểu hiện chủ yếu trong các hệ thống mơ hồ mà không ai đã vá.

ISO 8601: Tiêu Chuẩn Định Dạng Thời Gian Khác

Trong khi thời gian Unix là định dạng wire, ISO 8601 là định dạng có thể đọc được bởi con người. Ban đầu được công bố là ISO 8601:1988, sửa đổi vào năm 2000, 2004 và gần đây nhất trong ISO 8601-1:2019ISO 8601-2:2019, tiêu chuẩn xác định các biểu diễn như 2026-05-03T14:30:00Z (với Z có nghĩa là UTC) hoặc 2026-05-03T14:30:00+01:00 (với offset rõ ràng). "T" tách ngày khỏi thời gian; offset trailing loại bỏ sự mơ hồ về múi giờ. Đối với các giao thức internet, RFC 3339 (Klyne và Newman, 2002) định nghĩa một tập con nghiêm ngặt của ISO 8601 dễ phân tích hơn: đó là định dạng bạn sẽ thấy trong các phản hồi API JSON, timestamp log, các trường exp/iat JWT và các luồng OAuth. Mối quan hệ với thời gian Unix: ISO 8601 là dạng có thể đọc được bởi con người của một khoảnh khắc; thời gian Unix là dạng số nguyên của cùng khoảnh khắc đó. Một bộ chuyển đổi như cái này di chuyển giữa chúng theo cả hai hướng. Dạng thời gian địa phương (2026-05-03T14:30:00 không có offset) là mơ hồ và nên được tránh trong bất kỳ hệ thống nào vượt qua múi giờ: nó thường là nguồn gốc của các lỗi tinh tế khi một API JSON tuyên bố trả về timestamp nhưng không nói múi giờ chúng ở múi nào.

Giây vs Milliseconds: Sự Nhầm Lẫn Phổ Biến

Thời gian Unix ở cấp hệ điều hành đếm giây: một số nguyên 10 chữ số cho bất kỳ thời gian nào giữa khoảng 2001 và 2286 (timestamp trước 2001 có 9 chữ số hoặc ít hơn). Date.now() của JavaScript, System.currentTimeMillis() của JVM, DateTimeOffset.ToUnixTimeMilliseconds() của .NET, và hầu hết các API web đếm milliseconds: một số nguyên 13 chữ số cho cùng phạm vi. Hai dạng khác nhau chính xác bởi một hệ số 1.000, và lỗi liên quan đến timestamp phổ biến nhất trong bất kỳ mã nào nói chuyện với nhiều hệ thống là cung cấp giá trị milliseconds vào một hàm mong đợi giây (cho ngày xa hơn 1.000× trong tương lai so với dự định) hoặc ngược lại (cho ngày một phần nhỏ giây sau epoch). Bộ chuyển đổi này tự động phát hiện dựa trên số đếm chữ số: 10 chữ số trở xuống = giây, 13 trở lên = milliseconds. Đối với các giá trị ở giữa (11-12 chữ số, mơ hồ), bộ chuyển đổi thích cách diễn giải cho ngày hợp lý. Microseconds (16 chữ số, được sử dụng bởi một số hệ thống độ chính xác cao và nhiều kiểu TIMESTAMP cơ sở dữ liệu) và nanoseconds (19 chữ số, được sử dụng bởi Linux clock_gettime, time.UnixNano() của Go, công cụ quan sát hiện đại như OpenTelemetry) cũng gặp phải nhưng ít phổ biến hơn trong dữ liệu hướng người dùng.

Các sử dụng phổ biến của chuyển đổi timestamp

Một Lưu Ý Về Giây Nhuận và Thời Gian "Thực"

Một phức tạp tinh tế: thời gian Unix như được định nghĩa bởi POSIX không bao gồm giây nhuận. Coordinated Universal Time (UTC) thỉnh thoảng thêm một giây nhuận để giữ cho thời gian dân sự phù hợp với vòng quay thực tế của Trái đất: 27 giây nhuận đã được thêm kể từ khi hệ thống bắt đầu vào năm 1972. Thời gian Unix giả vờ những giây nhuận đó không xảy ra: khi một giây nhuận được chèn vào cuối ngày, đồng hồ hoặc lặp lại giây cuối cùng (hành vi truyền thống của Linux) hoặc bôi nó qua một khoảng thời gian dài hơn (cách tiếp cận "leap smear" của Google, được áp dụng bởi AWS và nhiều CDN). Đối với hầu hết việc sử dụng ứng dụng, điều này không quan trọng: độ chính xác thời gian dưới-giây hiếm khi có ý nghĩa ở cấp độ ứng dụng. Đối với công việc khoa học có độ chính xác cao, timestamp hệ thống giao dịch tài chính, hoặc timestamp bằng chứng pháp lý, hành vi giây nhuận là một nguồn gốc của các trường hợp biên đã biết. IERS (International Earth Rotation and Reference Systems Service) công bố giây nhuận với thông báo trước sáu tháng; gần đây nhất được chèn vào cuối ngày 31 tháng 12 năm 2016, và cộng đồng quốc tế đã xem xét loại bỏ giây nhuận hoàn toàn (nghị quyết để làm vậy vào năm 2035 đã được thông qua tại Hội nghị Chung về Trọng lượng và Đo lường năm 2022).

Quyền Riêng Tư: Chuyển Đổi Chỉ-Trình-Duyệt

Các timestamp bạn dán thường không nhạy cảm tự bản thân (một số nguyên Unix chỉ tiết lộ một khoảnh khắc trong thời gian), nhưng bối cảnh: một dòng log chứa định danh người dùng thực bên cạnh timestamp, một JWT chứa các claim về một người dùng thực, một phản hồi API với ID thực thể nội bộ: thường là nhạy cảm. Bộ chuyển đổi này chạy hoàn toàn trong trình duyệt của bạn thông qua API Date tích hợp của JavaScript. Không tải lên, không ghi log: xác minh trong tab Network của DevTools khi bạn nhập timestamp (không có yêu cầu nào kích hoạt), hoặc đưa trang offline (chế độ máy bay) sau khi tải. Hiển thị "hiện tại" cập nhật trực tiếp sử dụng đồng hồ địa phương của bạn, không phải nguồn thời gian mạng.

Câu hỏi thường gặp

Timestamp Unix là gì?

Một timestamp Unix (cũng gọi là thời gian Epoch hoặc POSIX) là số giây (hoặc mili giây) kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC. Đây là cách chuẩn để đại diện thời gian trong tin học.

Sự khác biệt giữa giây và mili giây là gì?

Các timestamp Unix có thể ở dạng giây (10 chữ số, vd: 1711824000) hoặc mili giây (13 chữ số, vd: 1711824000000). Công cụ này phát hiện tự động dựa trên độ dài của đầu vào.

Tại sao giờ đã chuyển đổi của tôi bị lệch nhiều giờ?

Bộ chuyển đổi hiển thị các định dạng giờ địa phương, UTC và ISO 8601. Nếu kết quả không phù hợp với giờ mong đợi, hãy kiểm tra rằng bạn đang đọc đúng định dạng tính đến múi giờ (sự khác biệt UTC vs giờ địa phương).

Vấn đề Y2K38 là gì?

Nếu thời gian Unix được lưu trữ trong số nguyên có dấu 32-bit (thiết kế Unix ban đầu), nó tràn vào ngày 19 tháng 1 năm 2038 lúc 03:14:07 UTC. Các hệ thống 64-bit hiện đại không bị ảnh hưởng: ngày tràn di chuyển đến khoảng năm 292 tỷ. Rủi ro Y2K38 tập trung vào các hệ thống nhúng 32-bit vẫn đang triển khai (bộ điều khiển công nghiệp, vệ tinh, infotainment ô tô, back-end ngân hàng, cảm biến IoT có tuổi thọ nhiều thập kỷ). Không giống như Y2K, vấn đề Y2K38 sẽ không phải là một cuộc khủng hoảng một ngày mà là một loạt các thất bại nhỏ trong các hệ thống đuôi dài trong những năm tiếp cận năm 2038.

Cái này có hoạt động offline không?

Có: một khi trang đã tải, tất cả các chuyển đổi chạy trong trình duyệt của bạn thông qua API Date tích hợp của JavaScript. Không có cuộc gọi mạng nào trong khi sử dụng. Nút "Hiện tại" sử dụng đồng hồ địa phương của thiết bị của bạn; timestamp cập nhật trực tiếp ở trên cùng cập nhật từ đồng hồ hệ thống của bạn mà không cần liên hệ với bất kỳ máy chủ thời gian nào.

Công cụ liên quan