Unix timestamp là gì và cách chuyển đổi sang ngày giờ
22/07/2026
Unix timestamp (còn gọi epoch time) là số giây trôi qua kể từ nửa đêm 1/1/1970 UTC. Đây là cách biểu diễn thời gian phổ biến nhất trong lập trình vì nó chỉ là một con số nguyên, không phụ thuộc định dạng hiển thị hay múi giờ.
Giây hay mili-giây?
Đây là nguồn lỗi số một. Unix time chuẩn tính bằng giây (10 chữ số cho thời điểm hiện tại), còn Date.now() của JavaScript và System.currentTimeMillis() của Java trả về mili-giây (13 chữ số). Nhân/chia 1000 khi chuyển giữa hai hệ.
Date.now(); // 1784434184257 (ms)
Math.floor(Date.now()/1000) // 1784434184 (s)
new Date(1784434184257); // đối tượng Date
Timestamp luôn là UTC
Bản thân timestamp không mang múi giờ — nó luôn tính theo UTC. Múi giờ chỉ xuất hiện khi bạn hiển thị. Nguyên tắc vàng: lưu UTC trong database, chỉ đổi sang giờ địa phương ở tầng giao diện.
Trong database
- PostgreSQL: ưu tiên
timestamptz(lưu UTC, tự xử lý múi giờ) hơntimestamptrơn - Chuyển sang epoch:
EXTRACT(EPOCH FROM now()) - Từ epoch về timestamp:
to_timestamp(1784434184)
Sai lầm kinh điển là lưu timestamp không múi giờ rồi mỗi server hiểu một kiểu, dẫn tới lệch vài giờ khi deploy ở vùng khác.
👉 Dùng thử công cụ liên quan trên dev-hub: Timestamp Converter — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.