Trình Chuyển Đổi Dấu Thời Gian Unix là gì?
Trình chuyển đổi Unix Timestamp là một công cụ phát triển thiết yếu kết nối thời gian epoch có thể đọc được bởi máy tính với các ngày tháng có thể đọc được bởi con người. Thời gian Unix (còn gọi là thời gian epoch) đo số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC — khoảnh khắc khi hệ điều hành Unix khởi động lần đầu tiên trên máy tính PDP-11 tại Bell Labs. Ngày này được gọi là Unix Epoch và đóng vai trò là điểm xuất phát phổ quát cho việc đo thời gian trong điện toán. Trình chuyển đổi hoạt động theo hai chiều: nhập timestamp Unix (thường là số 10 chữ số cho giây hoặc 13 chữ số cho mili giây) để xem ngày tháng tương ứng, hoặc nhập ngày giờ để lấy timestamp Unix tương đương. Hiển thị timestamp hiện tại thời gian thực được cập nhật mỗi giây để bạn có thể nắm bắt khoảnh khắc chính xác chỉ bằng một cú nhấp chuột. Date.now() của JavaScript và hầu hết các API hiện đại trả về timestamp bằng mili giây (13 chữ số), trong khi cơ sở dữ liệu và hệ thống legacy thường sử dụng giây (10 chữ số) — nhầm lẫn giữa hai cái là một trong những lỗi phổ biến nhất trong phát triển web. Trình chuyển đổi cũng xử lý timestamp âm đại diện cho ngày trước epoch (ngày 31 tháng 12 năm 1969 và trước đó). Chuyển đổi giữa UTC và giờ địa phương để xác minh các giá trị nhạy cảm với múi giờ.
Khi Nào Nên Sử Dụng Máy Tính Này
- Bạn đang gỡ lỗi API trả về dấu thời gian Unix và cần đọc chúng dưới dạng ngày tháng
- Bạn đang viết mã lưu trữ hoặc so sánh ngày và cần chuyển đổi giữa dấu thời gian và định dạng ngày
- Bạn cần dấu thời gian Unix hiện tại cho mục nhật ký, gọi API hoặc bản ghi cơ sở dữ liệu
- Bạn đang phân tích nhật ký máy chủ nơi dấu thời gian ở định dạng epoch
- Bạn muốn xác minh rằng dấu thời gian trong mã của bạn tương ứng với ngày và giờ chính xác
- Bạn đang làm việc với cơ sở dữ liệu hoặc hệ thống tệp sử dụng dấu thời gian Unix cho siêu dữ liệu tệp
Các bước:
- Nhập dấu thời gian Unix để chuyển đổi thành ngày dễ đọc.
- Hoặc nhập ngày/giờ để chuyển đổi thành dấu thời gian Unix.
- Nhấp vào nút giờ hiện tại để nhận dấu thời gian Unix hiện tại.
- Sao chép kết quả bằng nút sao chép.
Công Thức
Dấu thời gian → Ngày: new Date(timestamp × 1000)
Ngày → Dấu thời gian: Math.floor(date.getTime() / 1000)
Kỷ nguyên Unix: 1 tháng 1 năm 1970 00:00:00 UTC
Dấu thời gian 32-bit tối đa: 19 tháng 1 năm 2038 (03:14:07 UTC)
Trường Hợp Sử Dụng
- Gỡ lỗi phản hồi API có dấu thời gian
- Chuyển đổi giá trị dấu thời gian cơ sở dữ liệu
- Đặt ngày hết hạn trong mã
- Phân tích nhật ký và diễn giải dữ liệu chuỗi thời gian
Lợi Ích Chính
- Chuyển đổi tức thì giữa timestamp Unix và ngày tháng có thể đọc được theo cả hai chiều
- Timestamp Unix hiện tại thời gian thực được cập nhật mỗi giây với nút sao chép chỉ bằng một cú nhấp chuột
- Chuyển đổi giữa UTC và giờ địa phương để xác minh các giá trị nhạy cảm với múi giờ
- Xử lý cả định dạng 10 chữ số (giây) và 13 chữ số (mili giây)
- Xử lý timestamp âm cho ngày trước Unix Epoch (trước năm 1970)
- Miễn phí, tức thì và hoạt động trong trình duyệt của bạn mà không cần đăng ký hoặc thu thập dữ liệu
Mẹo Chuyên Nghiệp
- Luôn lưu timestamp trong UTC trong cơ sở dữ liệu — chuyển đổi sang giờ địa phương chỉ để hiển thị.
- Nhớ rằng Date.now() của JavaScript trả về mili giây. Để lấy giây: Math.floor(Date.now() / 1000).
- Sử dụng số nguyên 64 bit để lưu trữ timestamp trong các hệ thống mới để tránh vấn đề tràn năm 2038.
- Khi gỡ lỗi ngày tháng không mong đợi, trước tiên kiểm tra timestamp đang ở giây hay mili giây — sự khác biệt là 1000 lần.
- Đối với token xác thực API hoặc URL đã ký, tính timestamp hết hạn phía máy chủ và so sánh với thời gian Unix hiện tại để xác minh tính hợp lệ.
Những Lỗi Thường Gặp Cần Tránh
- Quên rằng Date.now() của JavaScript trả về mili giây — luôn chia cho 1000 khi so sánh với timestamp dựa trên giây.
- Giả định tất cả API sử dụng cùng định dạng — một số trả về giây, một số trả về mili giây. Luôn kiểm tra tài liệu API.
- Không tính đến sự khác biệt múi giờ giữa nơi tạo timestamp và nơi xem nó, khiến ngày tháng có vẻ khác nhau vài giờ.
- Sử dụng số nguyên 32 bit để lưu trữ timestamp trong hệ thống mới thay vì 64 bit, sẽ tràn vào năm 2038 và phá vỡ ứng dụng.
Các Thuật Ngữ Chính Được Giải Thích
- Unix timestamp: Số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC (Unix Epoch)
- Epoch: Điểm tham chiếu cho việc đo thời gian trong điện toán; đối với Unix, đó là ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC
- UTC (Giờ Phổ thông Cân bằng): Tiêu chuẩn thời gian chính được sử dụng trên toàn thế giới, độc lập với bất kỳ múi giờ nào
- Vấn đề năm 2038: Ngày khi timestamp Unix 32 bit sẽ tràn, buộc hệ thống chuyển sang giá trị âm và hiển thị ngày xung quanh năm 1901.
- Timestamp mili giây: Timestamp Unix 13 chữ số nơi thời gian được đo bằng mili giây thay vì giây, được sử dụng bởi Date.now() của JavaScript và hầu hết các API hiện đại.
Khái niệm liên quan
- Kỷ nguyên Unix: 1 tháng 1 năm 1970 00:00:00 UTC, điểm tham chiếu mà tất cả dấu thời gian Unix được đo từ
- Thời gian Epoch: Hệ thống biểu diễn thời gian dưới dạng số giây đã trôi qua từ kỷ nguyên Unix
- UTC (Giờ phối hợp quốc tế): Tiêu chuẩn thời gian chính mà thế giới điều chỉnh đồng hồ và thời gian, độc lập múi giờ
- Vấn đề Năm 2038: Ngày khi dấu thời gian Unix 32-bit sẽ tràn, có thể khiến hệ thống diễn giải ngày là 1901
- ISO 8601: Tiêu chuẩn quốc tế để biểu diễn ngày và giờ (ví dụ: 2024-06-29T12:00:00Z) thay thế cho dấu thời gian Unix
Ví Dụ
Dấu thời gian hiện tại: 1719676800 → Ngày: 29 tháng 6 năm 2024 12:00:00 PM UTC. Chuyển đổi ngày: "1 tháng 1 năm 2025 00:00:00 UTC" → Dấu thời gian: 1735689600.
Giải thích kết quả của bạn
Bộ chuyển đổi hoạt động theo hai hướng: nhập dấu thời gian Unix cho bạn ngày dễ đọc, và nhập ngày cho bạn dấu thời gian Unix. Giờ Unix hiện tại được hiển thị ở trên cùng với nút làm mới, vì vậy bạn luôn có thể xem dấu thời gian trực tiếp mà không cần nhập bất cứ thứ gì.
Dấu thời gian Unix đếm giây từ ngày 1 tháng 1 năm 1970 UTC (kỷ nguyên Unix). Chúng độc lập với múi giờ — cùng một dấu thời gian đại diện cho cùng một khoảnh khắc ở mọi nơi trên Trái Đất. Khi bạn nhập ngày, bộ chuyển đổi sử dụng độ lệch múi giờ địa phương của bạn để tính toán dấu thời gian, nhưng bạn có thể chuyển sang UTC nếu cần kết quả trung lập múi giờ.
Vấn đề 2038 đáng để hiểu: số nguyên có dấu 32-bit tràn vào ngày 19 tháng 1 năm 2038, có nghĩa là các hệ thống cũ sử dụng dấu thời gian 32-bit sẽ quay lại giá trị âm. Các hệ thống hiện đại sử dụng dấu thời gian 64-bit sẽ không tràn trong hàng tỷ năm. Nếu bạn gặp ngày không mong muốn quanh năm 1901 hoặc 2038, tràn 32-bit là nguyên nhân có thể.

