Unix Timestamp Converter
Bạn đang debug một API và thấy trường created_at trả về giá trị 1735689600. Đây là ngày nào? Hay bạn cần truyền thời gian vào một API nhưng nó yêu cầu Unix timestamp thay vì chuỗi ngày tháng thông thường? Tool Unix Timestamp Converter này giúp bạn chuyển đổi qua lại giữa Unix timestamp và ngày giờ con người đọc được — trong tích tắc.
Unix timestamp là gì?
Unix timestamp (còn gọi là Unix time, POSIX time, hoặc Epoch time) là số giây đã trôi qua kể từ 00:00:00 UTC ngày 1 tháng 1 năm 1970 — thời điểm được gọi là Unix Epoch. Đây là cách phổ biến nhất để lưu trữ và truyền tải thông tin thời gian trong lập trình.
Ví dụ:
| Unix Timestamp | Thời gian tương ứng (UTC) |
|---|---|
0 | 1970-01-01 00:00:00 UTC — điểm gốc |
1000000000 | 2001-09-09 01:46:40 UTC |
1700000000 | 2023-11-14 22:13:20 UTC |
2147483647 | 2038-01-19 03:14:07 UTC — giới hạn 32-bit |
Timestamp hiện tại (lúc bạn đọc bài này) là một số có 10 chữ số — ví dụ 1735689600. Các hệ thống dùng milliseconds (13 chữ số) hoặc microseconds (16 chữ số) sẽ có timestamp dài hơn.
Cách sử dụng tool
- Timestamp → Ngày giờ: Nhập số Unix timestamp vào ô bên trái → tool hiển thị ngay ngày giờ tương ứng theo UTC và theo múi giờ địa phương của bạn.
- Ngày giờ → Timestamp: Nhập ngày giờ vào ô bên phải → nhận Unix timestamp tương ứng (seconds hoặc milliseconds).
- Thời gian hiện tại: Nhấn Now để xem Unix timestamp của thời điểm hiện tại — cập nhật real-time.
- Chọn múi giờ: Chọn timezone để xem thời gian địa phương chính xác cho bất kỳ khu vực nào trên thế giới.
Tại sao lập trình dùng Unix timestamp thay vì chuỗi ngày?
| Tiêu chí | Unix Timestamp | Chuỗi ngày giờ (string) |
|---|---|---|
| So sánh thời gian | ✅ Đơn giản: so sánh hai số nguyên | ⚠️ Phải parse, phụ thuộc format |
| Tính toán khoảng cách | ✅ Trừ hai timestamp là xong | ⚠️ Phức tạp, dễ sai với DST, leap year |
| Múi giờ | ✅ Luôn UTC — không có timezone ambiguity | ⚠️ Phải ghi rõ timezone hoặc dễ nhầm |
| Lưu trữ database | ✅ Integer — nhỏ gọn, index nhanh | ⚠️ String/DateTime — tốn bộ nhớ hơn |
| Độ chính xác | ✅ Đến millisecond hoặc microsecond | ⚠️ Phụ thuộc vào format được dùng |
| Dễ đọc với người | ❌ Phải convert mới đọc được | ✅ Đọc thẳng được |
Kết luận thực tế: lưu timestamp trong database và code, hiển thị chuỗi ngày cho người dùng. Hai việc khác nhau, dùng hai định dạng khác nhau.
Seconds, milliseconds hay microseconds?
| Đơn vị | Số chữ số (năm 2024) | Ví dụ | Dùng ở đâu |
|---|---|---|---|
| Seconds | 10 chữ số | 1735689600 | Unix truyền thống, hầu hết API REST, database |
| Milliseconds | 13 chữ số | 1735689600000 | JavaScript (Date.now()), logging, analytics |
| Microseconds | 16 chữ số | 1735689600000000 | High-precision system, distributed tracing |
| Nanoseconds | 19 chữ số | 1735689600000000000 | Go time package, kernel-level timing |
Mẹo nhận biết: Nhìn số chữ số là biết đơn vị ngay — 10 chữ số là seconds, 13 là milliseconds. Nếu API trả timestamp 13 chữ số mà bạn xử lý như 10 chữ số, thời gian sẽ bị tính sai đến năm 2318!
Vấn đề Year 2038 là gì?
Hệ thống 32-bit lưu Unix timestamp dưới dạng số nguyên có dấu 32-bit, giá trị tối đa là 2,147,483,647 — tương ứng với ngày 19 tháng 1 năm 2038 lúc 03:14:07 UTC. Sau thời điểm đó, timestamp sẽ tràn số (overflow) và quay về giá trị âm — gây ra lỗi tương tự Y2K năm 2000.
Hệ thống 64-bit không bị ảnh hưởng — có thể lưu timestamp đến năm 292 tỷ. Hầu hết hệ thống hiện đại đã chạy 64-bit, nhưng một số hệ thống nhúng và legacy vẫn là vấn đề cần lưu ý.
Unix timestamp trong các ngôn ngữ lập trình
| Ngôn ngữ | Lấy timestamp hiện tại | Convert sang datetime |
|---|---|---|
| JavaScript | Date.now() (ms) hoặc Math.floor(Date.now()/1000) (s) | new Date(timestamp * 1000) |
| Python | import time; time.time() | datetime.fromtimestamp(ts) |
| PHP | time() | date('Y-m-d H:i:s', $ts) |
| Go | time.Now().Unix() | time.Unix(ts, 0) |
| Java | System.currentTimeMillis() (ms) | new Date(ts) |
| MySQL | UNIX_TIMESTAMP() | FROM_UNIXTIME(ts) |
| PostgreSQL | EXTRACT(EPOCH FROM NOW()) | TO_TIMESTAMP(ts) |
Kết luận
Unix timestamp là một trong những khái niệm đơn giản nhưng xuất hiện ở khắp nơi trong lập trình — từ database schema, API response, log file đến JWT token. Hiểu nó và biết cách convert nhanh là kỹ năng nhỏ tiết kiệm nhiều thời gian debug.
Khám phá thêm các tool hữu ích tại codetuthub.com/tools.