Đổi Unix timestamp
Timestamp ↔ ngày giờ theo giờ Việt Nam (UTC+07:00), cả giây lẫn mili giây.
Cách tính
Unix timestamp là số giây đã trôi qua kể từ 00:00:00 ngày 1/1/1970 theo giờ UTC — mốc này gọi là "epoch". Nó không mang theo múi giờ nào cả: cùng một timestamp là cùng một khoảnh khắc trên toàn thế giới, chỉ khác nhau ở chỗ đồng hồ mỗi nơi hiển thị mấy giờ. Đó là lý do hệ thống máy tính lưu thời gian theo cách này thay vì lưu chuỗi "14:30 ngày 5/3".
Việt Nam ở múi giờ UTC+07:00 quanh năm và không đổi giờ mùa hè. Điều này làm phép quy đổi ở đây đơn giản hơn hẳn so với cùng một công cụ ở châu Âu hay Bắc Mỹ: không có ngày nào có 23 giờ, không có giờ nào xuất hiện hai lần, và không có khoảnh khắc nào mơ hồ giữa hai múi.
Nhầm lẫn thường gặp nhất là giữa giây và mili giây. Ngôn ngữ Java và JavaScript làm việc với mili giây, còn Unix, PHP, Python và phần lớn cơ sở dữ liệu dùng giây. Dán một giá trị mili giây vào chỗ chờ giây thì bạn nhận được một ngày ở năm 56000. Trang này đoán đơn vị theo độ lớn — timestamp tính bằng giây cho các mốc thời gian thực tế có tối đa 10 chữ số, còn mili giây có 13 — và bạn vẫn có thể chọn tay nếu cần.
Chuỗi ISO 8601 hiển thị ở đây ghi rõ "+07:00" thay vì kết thúc bằng chữ Z. Hai cách viết cùng chỉ một khoảnh khắc, nhưng dạng có độ lệch giữ lại thông tin "giờ này là mấy giờ ở Việt Nam" — thứ mà chữ Z đã bỏ đi.
Công thức
giờ Việt Nam = timestamp (giây) × 1000 + 7 × 3600 × 1000, đọc theo UTC
Cộng độ lệch rồi đọc bằng các hàm UTC, thay vì đọc bằng hàm giờ địa phương. Hàm địa phương sẽ áp múi giờ của máy đang chạy — mà khi build trang, máy đó là máy chủ CI ở đâu không rõ.
Ví dụ
Giao thừa dương lịch 2026 tại Việt Nam:
- Giờ Việt Nam
- 01/01/2026 00:00:00
- Cùng khoảnh khắc theo UTC
- 31/12/2025 17:00:00
- Unix timestamp (giây)
- 1767200400
- Unix timestamp (mili giây)
- 1767200400000
- ISO 8601 kèm độ lệch
- 2026-01-01T00:00:00+07:00
Cùng một con số 1767200400 là nửa đêm ở Hà Nội và là 5 giờ chiều hôm trước ở London. Timestamp không "thuộc về" múi giờ nào — múi giờ chỉ quyết định cách đọc nó.
Câu hỏi thường gặp
Unix timestamp là gì?
Là số giây tính từ 00:00:00 ngày 1/1/1970 theo giờ UTC. Đây là cách phổ biến nhất để máy tính lưu một khoảnh khắc, vì nó chỉ là một con số và không phụ thuộc vào múi giờ hay định dạng ngày tháng.
Timestamp của tôi là giây hay mili giây?
Đếm chữ số. Với các mốc thời gian hiện nay, giây có 10 chữ số còn mili giây có 13. Trang này tự đoán theo độ lớn, và bạn có thể chọn tay nếu muốn.
Vì sao đổi ra ngày lại lệch 7 tiếng so với chỗ khác?
Nhiều công cụ hiển thị theo UTC. Trang này hiển thị theo giờ Việt Nam (UTC+07:00), nên cùng một timestamp sẽ cho giờ muộn hơn 7 tiếng so với công cụ hiển thị UTC. Cả hai đều đúng, chỉ khác múi giờ tham chiếu.
Việt Nam có đổi giờ mùa hè không?
Không. Việt Nam giữ UTC+07:00 quanh năm. Nhờ vậy phép quy đổi ở đây không bao giờ gặp trường hợp một giờ đồng hồ xuất hiện hai lần hoặc bị bỏ qua như ở các nước có đổi giờ.
Vấn đề năm 2038 là gì?
Hệ thống lưu timestamp trong số nguyên có dấu 32 bit sẽ tràn vào ngày 19/1/2038. Điều này không ảnh hưởng tới trang này — JavaScript dùng số thực 64 bit — nhưng vẫn đáng biết nếu bạn làm việc với hệ thống cũ.
Vì sao ô timestamp mặc định là nửa đêm hôm nay chứ không phải bây giờ?
Vì trang này được dựng sẵn thành tệp HTML tĩnh, nên một giá trị thay đổi từng giây sẽ luôn lỗi thời ngay khi tệp được tạo ra. Nút "lấy thời điểm hiện tại" đưa vào giá trị của đúng lúc bạn bấm.