Timestamp Unix âm nghĩa là gì?
Biểu diễn ngày trước 1/1/1970. Ví dụ -86400 tương ứng ngày 31/12/1969. JavaScript cũng xử lý đúng các timestamp âm.
Chuyển Unix timestamp thành ngày tháng và ngược lại
Unix được phát triển vào năm 1969-1970, các lập trình viên chọn ngày 1/1/1970 làm điểm gốc vì tính tiện lợi. Đây là giá trị dễ xử lý trên máy tính thời đó.
Biểu diễn ngày trước 1/1/1970. Ví dụ -86400 tương ứng ngày 31/12/1969. JavaScript cũng xử lý đúng các timestamp âm.
Dùng Date.now() để lấy timestamp mili giây, hoặc Math.floor(Date.now()/1000) để lấy giây. new Date().getTime() cũng trả về giá trị tương tự Date.now().
Unix timestamp là cách máy tính lưu trữ thời gian một cách phổ quát — số giây (hoặc mili giây) trôi qua từ ngày 1/1/1970 UTC (Unix epoch), biểu diễn bằng một số nguyên đơn giản. Hệ điều hành, cơ sở dữ liệu và API đều dùng chuẩn này để xử lý ngày giờ. Vì không phụ thuộc múi giờ, nó đặc biệt phù hợp cho hệ thống quốc tế.
10 chữ số là giây (ví dụ: 1700000000), 13 chữ số là mili giây (ví dụ: 1700000000000). Date.now() trong JavaScript trả về mili giây, còn các lệnh gọi hệ thống Unix/Linux thường dùng giây. Bạn có thể nhận biết đơn vị qua số lượng chữ số.
Timestamp là số nguyên thuần túy, dễ so sánh, sắp xếp và tính hiệu số. Chuỗi ngày tháng như YYYY-MM-DD dễ gây nhầm lẫn về định dạng và múi giờ, trong khi timestamp luôn rõ ràng, chuẩn UTC. Hiệu suất lưu trữ cao và thuận lợi cho việc tối ưu index trong cơ sở dữ liệu.
Unix timestamp luôn theo chuẩn UTC (Giờ Phối hợp Quốc tế). Việt Nam ở múi UTC+7, nên khi hiển thị cần cộng thêm 7 giờ. Thực hành tốt nhất là lưu theo UTC và chỉ chuyển đổi sang giờ địa phương khi hiển thị cho người dùng.
Unix timestamp lưu dưới dạng số nguyên 32-bit có dấu sẽ bị tràn vào ngày 19/1/2038 lúc 03:14:07 UTC, được gọi là vấn đề Y2K38. Hệ thống 64-bit không bị ảnh hưởng, nhưng các hệ thống nhúng và legacy cũ vẫn có nguy cơ và cần được lên kế hoạch nâng cấp.