Lập trình

Chuyển đổi Unix Timestamp

Chuyển epoch giây sang ngày giờ dễ đọc và ngược lại. Mọi thứ chạy trong trình duyệt.

Thời gian Unix hiện tại
1,793,379,800giây kể từ 1/1/1970
Múi giờ
Epoch → Ngày giờ

just now

Ngày giờ → Epoch

20 seconds ago

Mọi chuyển đổi chạy cục bộ trong trình duyệt. Không gửi dữ liệu lên server.

Đồng hồ treo tường và tờ lịch nối với nhau bằng mũi tên vòng

Cách sử dụng

  1. Thời gian Unix hiện tại hiện ở trên cùng và cập nhật mỗi giây. Bấm Sao chép epoch để sao chép.
  2. Muốn đọc một timestamp, dán vào phần Epoch → Ngày giờ. Bạn nhận được ngày giờ theo UTC, theo múi giờ bạn chọn và theo chuẩn ISO 8601, kèm thời điểm đó cách bây giờ bao lâu.
  3. Muốn lấy timestamp của một ngày, chọn ngày giờ ở phần Ngày giờ → Epoch. Ngày giờ được hiểu theo giờ địa phương của thiết bị và đổi ra epoch theo giây và mili giây.
  4. Đổi Múi giờ bất cứ lúc nào; lựa chọn được ghi nhớ trên thiết bị này.

Unix timestamp là gì?

Unix timestamp (còn gọi là epoch time hay POSIX time) là số giây đã trôi qua kể từ 00:00:00 UTC ngày 1/1/1970, gọi là "Unix epoch". Ví dụ 1700000000 là 22:13:20 UTC ngày 14/11/2023, tức 05:13:20 sáng ngày 15/11/2023 giờ Việt Nam (UTC+7).

Vì chỉ là một con số, không kèm múi giờ, nên tại cùng một thời điểm nó giống nhau ở mọi nơi trên thế giới. Đó là lý do cơ sở dữ liệu, file log, API và bảng tính xuất từ ứng dụng hay lưu ngày giờ theo cách này. Con số chỉ thành ngày giờ cụ thể khi bạn đổi theo một múi giờ nhất định.

Unix timestampNgày giờ (UTC)
001/01/1970, 00:00:00
100000000009/09/2001, 01:46:40
170000000014/11/2023, 22:13:20
200000000018/05/2033, 03:33:20
214748364719/01/2038, 03:14:07

Giây hay mili giây?

Timestamp tính bằng giây hiện có 10 chữ số (ví dụ 1761091200). Nhiều hệ thống, gồm JavaScript và Java, đếm bằng mili giây nên có 13 chữ số (1761091200000). Nếu ngày đổi ra rơi vào hàng chục nghìn năm sau, giá trị đó tính bằng mili giây: bỏ ba chữ số cuối, hoặc chia cho 1000, rồi mới đổi ở đây.

Phần Ngày giờ → Epoch cho cả hai giá trị, bạn sao chép giá trị mà hệ thống của mình cần.

Đổi Unix timestamp trong Excel hoặc Google Sheets

Bảng tính đếm theo ngày, không theo giây, và bắt đầu từ mốc riêng của nó. Để đổi timestamp ở ô A1 thành ngày, dùng =A1/86400+DATE(1970,1,1) rồi định dạng ô là Ngày giờ. Chiều ngược lại dùng =(A1-DATE(1970,1,1))*86400.

Cả hai công thức đều theo UTC. Muốn hiện giờ Việt Nam, cộng thêm 7 tiếng: =A1/86400+DATE(1970,1,1)+7/24. Việt Nam không dùng giờ mùa hè nên con số 7 không đổi quanh năm.

Sự cố năm 2038

Phần mềm cũ lưu thời gian Unix bằng số nguyên có dấu 32 bit, giá trị lớn nhất là 2.147.483.647, tương ứng 03:14:07 UTC ngày 19/1/2038. Một giây sau, bộ đếm bị tràn và có thể nhảy về tháng 12/1901.

Hệ điều hành và ngôn ngữ lập trình hiện đại dùng thời gian 64 bit, đủ dùng hàng tỷ năm, nhưng thiết bị cũ, định dạng file cũ và hệ thống nhúng vẫn có thể bị ảnh hưởng.

Câu hỏi thường gặp

Unix time có tính múi giờ hay giờ mùa hè không?

Không. Unix timestamp luôn tính theo UTC. Múi giờ và giờ mùa hè chỉ có tác dụng khi hiển thị, vì vậy công cụ hiện UTC và múi giờ bạn chọn cạnh nhau.

Unix time có tính giây nhuận không?

Không. Mỗi ngày được coi là đúng 86.400 giây, nên có thể đổi timestamp ra ngày chỉ bằng phép tính đơn giản.

Unix timestamp có âm được không?

Có. Giá trị âm là các ngày trước năm 1970; ví dụ -86400 là 00:00:00 UTC ngày 31/12/1969.

Dữ liệu của tôi có bị gửi đi không?

Không. Mọi chuyển đổi chạy trong trình duyệt, không có gì bạn nhập được gửi lên máy chủ.

Gặp lỗi hoặc có ý tưởng? Báo lỗi hoặc góp ý

Share

Bạn cũng có thể thích