Timestamp epoch mili giây là gì?
Timestamp Unix epoch đếm khoảng thời gian đã trôi qua kể từ mốc 1970-01-01 00:00:00 UTC — thường gọi là "epoch". Nhiều ngôn ngữ lập trình và API (như Date.now() của JavaScript, System.currentTimeMillis() của Java, hay nhiều dữ liệu JSON) biểu diễn giá trị này theo mili giây thay vì giây. Công cụ này biến con số thô đó thành ngày giờ UTC rõ ràng, dễ đọc cho con người.
Cách sử dụng công cụ
Bạn chỉ cần dán hoặc nhập timestamp dạng mili giây vào ô nhập rồi bấm chuyển đổi. Công cụ sẽ chia giá trị cho 1000 để lấy số giây trọn vẹn, sau đó ánh xạ số giây này lên lịch tính từ mốc epoch. Kết quả trả về gồm chuỗi đầy đủ theo chuẩn ISO 8601 (ví dụ 2023-11-14T22:13:20Z) cùng phần tách chi tiết năm, tháng, ngày, giờ, phút, giây — tất cả đều theo giờ UTC, nên kết quả không bị ảnh hưởng bởi múi giờ tại nơi bạn đang ở.
Giải thích công thức
Công thức chuyển đổi cơ bản như sau:
$$\text{Date}_{\text{UTC}} = \text{Epoch}_{1970}\;+\;\frac{\text{Epoch Time (ms)}}{1000}\ \text{seconds}$$Có thể viết chi tiết hơn:
$$\begin{gathered} \text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + t_{s}\ \text{seconds} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} t_{s} &= \left\lfloor \dfrac{\text{Epoch Time (ms)}}{1000} \right\rfloor \\ \text{Epoch}_{1970} &= \text{1970-01-01T00:00:00Z} \end{aligned} \right. \end{gathered}$$Việc chuyển đổi gồm hai bước đơn giản. Đầu tiên, \(\text{seconds} = \lfloor \text{ms} / 1000 \rfloor\) loại bỏ phần dư nhỏ hơn một giây. Tiếp theo, \(\text{date} = \text{epoch} + \text{seconds}\) cộng số giây đó vào thời điểm nửa đêm ngày 1 tháng 1 năm 1970. Phần logic lịch sẽ tự động xử lý năm nhuận, số ngày khác nhau giữa các tháng và những trường hợp tương tự.
Ví dụ minh họa
Lấy giá trị 1.700.000.000.000 ms. Chia cho 1000 ta được 1.700.000.000 giây:
$$\left\lfloor \frac{1{,}700{,}000{,}000{,}000}{1000} \right\rfloor = 1{,}700{,}000{,}000\ \text{seconds}$$Cộng số giây này vào mốc epoch sẽ ra 2023-11-14T22:13:20Z — tức là ngày 14 tháng 11 năm 2023 lúc 22:13:20 theo giờ UTC.
Câu hỏi thường gặp
Kết quả có phải theo giờ địa phương của tôi không? Không. Để tránh nhầm lẫn, kết quả luôn được hiển thị theo giờ UTC (Giờ Phối hợp Quốc tế). Bạn cần tự cộng thêm chênh lệch múi giờ nếu muốn xem theo giờ địa phương. Ví dụ, Việt Nam ở múi giờ UTC+7, nên bạn cộng thêm 7 giờ vào kết quả.
Nếu tôi có giá trị theo giây chứ không phải mili giây thì sao? Hãy nhân timestamp dạng giây với 1000 trước khi nhập, hoặc đơn giản là thêm ba số 0 vào cuối.
Vì sao timestamp lại hiển thị ra một ngày ở rất xa trong tương lai hoặc rơi vào năm 1970? Một giá trị tính bằng giây nhưng lại nhập như mili giây sẽ ra kết quả gần năm 1970, còn một giá trị vốn đã là mili giây mà bị thêm số 0 thì sẽ rơi vào tương lai rất xa. Hãy luôn kiểm tra chắc chắn rằng đơn vị của bạn là mili giây.