Cách chuyển đổi dấu thời gian Unix
Dấu thời gian Unix là cách máy tính lưu trữ và trao đổi thời gian — một con số duy nhất đại diện cho số giây kể từ ngày 1 tháng 1 năm 1970. Bạn tìm thấy chúng trong các phản hồi API, các bản ghi cơ sở dữ liệu, các tệp nhật ký và các mã thông báo JWT. Khi bạn cần biết ngày tương ứng với 1711824000 là gì, cần một trình chuyển đổi.
Một dấu thời gian Unix trông như thế nào
| Dấu thời gian | Loại | Ngày dễ đọc |
|---|---|---|
| 0 | Giây | 1 tháng 1, 1970, 00:00:00 UTC |
| 1000000000 | Giây | 9 tháng 9, 2001, 01:46:40 UTC |
| 1711824000 | Giây | 31 tháng 3, 2024, 00:00:00 UTC |
| 1711824000000 | Mili giây | 31 tháng 3, 2024, 00:00:00 UTC |
Sự khác biệt giữa giây và mili giây là ba số không bổ sung. Một số có 10 chữ số là tính bằng giây; 13 chữ số, tính bằng mili giây.
Cách chuyển đổi dấu thời gian
- Nhập một dấu thời gian hoặc ngày — dán một dấu thời gian Unix để chuyển nó thành ngày dễ đọc, hoặc nhập một ngày để có dấu thời gian.
- Xác minh định dạng — trình chuyển đổi tự động phát hiện giây hoặc mili giây theo độ dài của số.
- Đọc kết quả — xem ngày trong múi giờ địa phương của bạn, ở UTC và ở định dạng ISO 8601.
Nơi bạn gặp dấu thời gian
- Phản hồi API — hầu hết các API REST trả về ngày dưới dạng dấu thời gian Unix:
"created_at": 1711824000 - Mã thông báo JWT — các claim
iat(issued at) vàexp(expiration) là các dấu thời gian Unix - Bản ghi cơ sở dữ liệu — nhiều cơ sở dữ liệu lưu trữ dấu thời gian dưới dạng số nguyên để sắp xếp và so sánh hiệu quả
- Tệp nhật ký — nhật ký máy chủ thường có tiền tố các mục với dấu thời gian epoch
- Tác vụ cron — các hệ thống lập lịch tham chiếu thời gian ở định dạng Unix
Dấu thời gian trong mã
Chuyển đổi nhanh trong các ngôn ngữ phổ biến:
JavaScript: new Date(1711824000 * 1000) (JS sử dụng mili giây)
Python: datetime.fromtimestamp(1711824000)
Thời gian hiện tại: Date.now() (JS), time.time() (Python)
Mẹo
- Nhân với 1000 cho JavaScript — đối tượng
Datecủa JS mong đợi mili giây, nhưng hầu hết các API trả về giây. Quên nhân là lỗi timestamp phổ biến nhất. - Luôn xác định UTC — khi chuyển đổi, hãy rõ ràng về múi giờ. « 31 tháng 3 lúc nửa đêm » là một dấu thời gian khác nhau tùy thuộc vào việc nó là UTC, EST hay PST.
- Sử dụng ISO 8601 để hiển thị — sau khi chuyển đổi, định dạng các ngày thành
2024-03-31T00:00:00Zđể giao tiếp không mơ hồ giữa các múi giờ. - Đánh dấu trình chuyển đổi làm yêu thích — nếu bạn làm việc với API hoặc cơ sở dữ liệu, bạn sẽ chuyển đổi đủ thường xuyên để muốn công cụ chỉ một cú nhấp.
Câu hỏi thường gặp
Thời gian Unix epoch là gì?
Thời gian Unix epoch (còn gọi là thời gian POSIX hoặc dấu thời gian Unix) là số giây trôi qua kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC. Đây là cách tiêu chuẩn mà máy tính biểu diễn thời gian nội bộ.
Sự khác biệt giữa dấu thời gian theo giây và mili giây là gì?
Dấu thời gian Unix theo giây có 10 chữ số (ví dụ 1711824000). Dấu thời gian theo mili giây có 13 chữ số (ví dụ 1711824000000). JavaScript sử dụng mili giây, hầu hết các API và cơ sở dữ liệu sử dụng giây. Trình chuyển đổi tự động phát hiện theo độ dài.
Tại sao thời gian được chuyển đổi của tôi lệch vài giờ?
Dấu thời gian luôn ở UTC. Trình chuyển đổi hiển thị cả UTC và giờ địa phương của bạn. Nếu kết quả không khớp với mong đợi của bạn, có lẽ bạn đang so sánh đầu ra UTC với giờ địa phương, hoặc ngược lại.
Chuyện gì xảy ra vào năm 2038?
Các hệ thống lưu trữ dấu thời gian Unix ở số nguyên có dấu 32 bit sẽ tràn vào ngày 19 tháng 1 năm 2038. Hầu hết các hệ thống hiện đại sử dụng số nguyên 64 bit, mở rộng phạm vi vượt xa bất kỳ mối lo ngại thực tế nào.