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.
Timestamp → Ngày
Ngày → Timestamp
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:2019 và ISO 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
- Gỡ lỗi API · chuyển đổi các timestamp của các phản hồi API để hiểu khi một dữ liệu được tạo hoặc sửa đổi.
- Phân tích nhật ký · đọc và hiểu các timestamp của các log của máy chủ và ứng dụng.
- Gỡ lỗi JWT. Các claim
exp(hết hạn) vàiat(issued-at) trong JSON Web Tokens là số nguyên thời gian Unix theo RFC 7519. Để kiểm tra xem một token đã hết hạn hay xem khi nào nó được phát hành, dán giá trị tại đây. - Tính chênh lệch thời gian. Trừ hai timestamp Unix để có khoảng thời gian giữa chúng tính bằng giây (hoặc milliseconds). Không có toán múi giờ, không có điều chỉnh DST, không có trường hợp biên số học lịch.
- Truy vấn cơ sở dữ liệu với cột epoch. Nhiều cơ sở dữ liệu cũ lưu trữ timestamp dưới dạng số nguyên Unix. Truy vấn "tất cả các sự kiện giữa X và Y" yêu cầu chuyển đổi các ngày cắt có thể đọc được bởi con người sang số nguyên Unix cho mệnh đề WHERE.
- Lên lịch và các tác vụ cron. Các hệ thống lên lịch công việc theo thời gian tuyệt đối (Kubernetes CronJobs, AWS EventBridge, Azure Logic Apps) thường muốn các đích thời gian Unix trong cấu hình của họ. Chuyển đổi thời gian đích thân thiện-người-dùng sang epoch.
- Giải mã các timestamp "thú vị". Các giá trị epoch nổi tiếng: 0 = 1 tháng 1 năm 1970 00:00:00 UTC (chính bản thân epoch); 1234567890 = 13 tháng 2 năm 2009 23:31:30 UTC (được kỷ niệm ngắn ngủi như khoảnh khắc "Unix billion"); 1500000000 = 14 tháng 7 năm 2017 02:40:00 UTC; 2000000000 = 18 tháng 5 năm 2033 03:33:20 UTC; 2147483647 = 19 tháng 1 năm 2038 03:14:07 UTC (điểm tràn Y2K38).
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.