Bộ chuyển đổi Unix Timestamp
Biến một Unix timestamp (epoch) thành ngày giờ dễ đọc — theo giờ địa phương, UTC và ISO 8601 — hoặc chuyển bất kỳ ngày nào ngược lại thành timestamp. Hoạt động với giây hoặc mili giây.
—
Mili giây: —
ISO 8601: —
Dán một giá trị epoch. Dùng nút chuyển nếu timestamp của bạn ở đơn vị mili giây.
Chọn một ngày và giờ để lấy Unix timestamp tương ứng.
Cách sử dụng Bộ chuyển đổi Unix Timestamp
- 1
Nhập một timestamp
Dán hoặc gõ một Unix timestamp vào trường “Timestamp sang ngày giờ”, rồi gạt nút Giây / Mili giây cho khớp với giá trị của bạn.
- 2
Đọc ngày giờ
Xem thời điểm đó theo múi giờ địa phương, theo UTC, dưới dạng chuỗi ISO 8601 và dưới dạng thời gian tương đối như “3 giờ trước”.
- 3
Chuyển ngày giờ ngược lại
Dùng bộ chọn “Ngày giờ sang timestamp” để chọn bất kỳ ngày và giờ nào và nhận giá trị epoch của nó ở đơn vị giây và mili giây.
- 4
Sao chép kết quả
Nhấn sao chép ở bất kỳ giá trị nào để đưa nó vào khay nhớ tạm, sẵn sàng để chèn vào mã nguồn, một truy vấn cơ sở dữ liệu hay một yêu cầu API.
Thời gian Unix, giải thích cho lập trình viên
Unix timestamp là gì
Một Unix timestamp là một con số duy nhất biểu diễn một thời điểm: số giây đã trôi qua kể từ mốc epoch của Unix, tức nửa đêm theo giờ UTC ngày 1 tháng 1 năm 1970. Chẳng hạn, timestamp 1700000000 tương ứng với 22:13:20 UTC ngày 14 tháng 11 năm 2023. Một con số nắm bắt trọn vẹn ngày và giờ mà không hề mơ hồ.
Vì nó chỉ là một số nguyên đếm tăng lên, thời gian Unix cực kỳ dễ lưu trữ, sắp xếp và so sánh. Lấy một timestamp trừ đi một timestamp khác là bạn có chính xác số giây giữa hai sự kiện. Chính sự đơn giản này là lý do nó làm nền tảng cho rất nhiều thứ trong tin học, từ thời điểm sửa đổi tệp cho đến các token xác thực.
Tại sao lại là 1970
Mốc epoch 1970 là một di sản lịch sử của hệ điều hành Unix, vốn đang được phát triển tại Bell Labs vào khoảng thời gian đó. Các kỹ sư cần một điểm tham chiếu cố định cho đồng hồ hệ thống, và thời điểm đầu của thập niên mà họ đang làm việc là một lựa chọn gọn gàng, tiện lợi. Nó được giữ lại, và hàng chục năm sau nó vẫn là tiêu chuẩn trên gần như mọi nền tảng.
Không có gì đặc biệt về mặt toán học ở năm 1970; nó đơn giản là một điểm gốc chung. Điều quan trọng là mọi người đều thống nhất về nó. Chính điểm tham chiếu chung đó cho phép một timestamp được tạo ra trên một máy được hiểu đúng bởi bất kỳ máy nào khác, bất kể nhà cung cấp, ngôn ngữ hay vị trí.
Giây so với mili giây
Thời gian Unix truyền thống được đo bằng giây, nhưng nhiều môi trường hiện đại dùng mili giây để có độ phân giải mịn hơn. Chẳng hạn, Date.now của JavaScript trả về mili giây. Dấu hiệu thực tế là số lượng chữ số: một timestamp hiện nay tính bằng giây có 10 chữ số, trong khi cùng thời điểm đó tính bằng mili giây lại có 13 chữ số, lớn hơn khoảng một nghìn lần.
Lẫn lộn hai đơn vị này là một lỗi thường gặp. Đưa một giá trị mili giây vào một hàm đang chờ giây thì ngày của bạn rơi vào hàng chục nghìn năm trong tương lai; làm ngược lại thì bạn quay về gần năm 1970. Nếu một ngày đã chuyển đổi trông vô lý, hãy kiểm tra đơn vị trước tiên. Nút gạt Giây và Mili giây của công cụ này tồn tại chính là để giải quyết sự nhầm lẫn đó chỉ bằng một cú nhấp.
UTC so với giờ địa phương
Bản thân một Unix timestamp không mang theo múi giờ nào. Nó đánh dấu cùng một thời điểm ở mọi nơi trên Trái Đất; con số này giống hệt nhau dù bạn ở Tokyo hay New York. Múi giờ chỉ bước vào bức tranh khi bạn chuyển thời điểm đó thành một ngày con người đọc được, và đó là lý do cùng một timestamp lại hiển thị thành các giờ đồng hồ khác nhau ở những nơi khác nhau.
Bộ chuyển đổi này hiển thị cả hai dạng: giờ địa phương của bạn, được định dạng theo múi giờ trên thiết bị của bạn, và UTC, mốc tham chiếu chung của toàn cầu. Lưu trữ và truyền các timestamp ở dạng UTC, rồi chỉ chuyển sang giờ địa phương để hiển thị, là cách làm tiêu chuẩn nhằm tránh cả một lớp lỗi lệch giờ, đặc biệt là quanh các đợt đổi giờ tiết kiệm ánh sáng ban ngày.
Sự cố Năm 2038
Nhiều hệ thống cũ lưu thời gian Unix trong một số nguyên có dấu 32-bit, vốn chỉ chứa được giá trị tối đa là 2.147.483.647. Trần đó bị chạm tới vào lúc 03:14:07 UTC ngày 19 tháng 1 năm 2038. Một giây sau đó, bộ đếm bị tràn và quay vòng về một số âm lớn, mà các hệ thống đó diễn giải thành một ngày tận năm 1901.
Đây là âm vang thời hiện đại của sự cố Năm 2000, và nó đe dọa các thiết bị nhúng, các cơ sở dữ liệu cũ kỹ, cùng bất kỳ đoạn mã nào vẫn còn dùng thời gian 32-bit. Cách khắc phục là lưu thời gian trong một số nguyên 64-bit rộng hơn, vốn đẩy giới hạn ra xa hàng trăm tỷ năm. Bản thân công cụ này chạy trong trình duyệt của bạn bằng cách dùng cơ chế xử lý ngày giờ có sẵn của JavaScript chứ không phải thời gian 32-bit, nên nó chuyển đổi các ngày vượt xa năm 2038 mà không gặp vấn đề gì.
Chuyển đổi theo cả hai chiều
Đi từ một timestamp đến một ngày có nghĩa là coi con số đó như số giây kể từ mốc epoch rồi cộng chúng vào. Chiều ngược lại, biến một ngày thành một timestamp, tính xem có bao nhiêu giây nằm giữa mốc epoch và thời điểm đó. Bộ chuyển đổi làm được cả hai: dán một giá trị epoch để đọc ra ngày của nó, hoặc chọn một ngày trong bộ chọn để lấy timestamp của nó.
Phần hiển thị thời gian tương đối, chẳng hạn "3 giờ trước," được suy ra bằng cách lấy thời điểm hiện tại trừ đi timestamp rồi mô tả khoảng cách đó bằng ngôn ngữ đời thường. Nó tiện lợi để kiểm tra nhanh tính hợp lý của một giá trị chỉ bằng một cái liếc, vì một mục nhật ký tự nhận là đến từ hai năm trong tương lai thì rõ ràng là đáng ngờ.
Bạn sẽ gặp thời gian Unix ở đâu
Unix timestamp hiện diện khắp nơi trong phần mềm. Nhật ký máy chủ đóng dấu một timestamp lên mỗi dòng để các sự kiện có thể được sắp thứ tự một cách chính xác. Các REST API trả về chúng trong các trường như created_at và expires_at vì chúng trung lập về ngôn ngữ và cô đọng. Cơ sở dữ liệu dùng chúng để sắp xếp và cho các truy vấn theo khoảng thời gian, còn JWT thì mã hóa thời điểm hết hạn dưới dạng một Unix timestamp.
Với các lập trình viên và nhà phân tích, đọc nhanh những giá trị này là một nhu cầu hằng ngày. Khi bạn đang gỡ lỗi một phản hồi API, lướt qua một tệp nhật ký, hay kiểm tra xem khi nào một token hết hạn, việc thả con số thô vào một bộ chuyển đổi sẽ biến một số nguyên khó hiểu thành một ngày mà bạn có thể hình dung được, theo cả giờ địa phương lẫn UTC, ở đơn vị giây hoặc mili giây.
Câu hỏi thường gặp
Unix timestamp là gì?
Timestamp của tôi tính bằng giây hay mili giây?
Công cụ chuyển đổi dùng múi giờ nào?
Sự cố Năm 2038 là gì?
Dữ liệu của tôi có được gửi đến máy chủ không?
Công cụ liên quan
Tiếp tục với những công cụ hữu ích này