Bộ chuyển đổi Unix Timestamp sang Ngày: Hỗ trợ định dạng 12/24 giờ
Chuyển đổi Unix timestamps thành ngày và giờ dễ đọc cho con người. Chọn giữa định dạng thời gian 12 giờ và 24 giờ với công cụ chuyển đổi đơn giản, thân thiện với người dùng này.
Bộ chuyển đổi Unix Timestamp
Dấu thời gian Unix là số giây kể từ ngày 1 tháng 1 năm 1970 (UTC)
Ngày & Giờ đã chuyển đổi
Dấu thời gian Unix là gì?
Dấu thời gian Unix là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 (nửa đêm UTC/GMT), không tính các giây nhuận. Nó được sử dụng rộng rãi trong các hệ thống Unix và các ngôn ngữ lập trình cho các phép tính ngày và giờ.
Tài liệu hướng dẫn
Công cụ chuyển đổi dấu thời gian Unix sang ngày tháng
Dấu thời gian Unix là một số biểu thị một thời điểm cụ thể. Nó đếm số giây nguyên đã trôi qua kể từ nửa đêm UTC vào 1 tháng 1, 1970, thời điểm được gọi là kỷ nguyên Unix. Công cụ này chuyển đổi dấu thời gian Unix thành ngày theo lịch và thời gian trên đồng hồ, được hiển thị theo định dạng 24 giờ hoặc 12 giờ.
Cách chuyển đổi dấu thời gian Unix sang ngày tháng
Công thức cơ bản rất đơn giản:
ngày = kỷ nguyên Unix (1970-01-01, 00:00:00 UTC) + dấu thời gian (tính bằng giây)
Để chuyển một số giây thô thành ngày tháng, hãy cộng số giây đó vào 1 tháng 1, 1970. Sau đó, kết quả phải được tách thành năm, tháng, ngày, giờ, phút và giây. Đây là phần khó, vì phải tính đến năm nhuận (trong đó tháng Hai có thêm một ngày) và thực tế là các tháng có độ dài khác nhau. Hầu hết ngôn ngữ lập trình đều có hàm ngày tháng tích hợp để tự động thực hiện việc này, nên không ai phải tính từng bước.
Ví dụ minh họa
Xét dấu thời gian 1609459200.
- Chia cho số giây trong một ngày: 1.609.459.200 ÷ 86.400 = 18.628 ngày.
- Đếm tiến 18.628 ngày kể từ 1 tháng 1, 1970, đồng thời tính các năm nhuận trên đường đi.
- Kết quả rơi vào 1 tháng 1, 2021.
Vì vậy, 1609459200 được chuyển đổi thành Thứ Sáu, 1 tháng 1, 2021, 00:00:00 UTC. Thứ trong tuần, tức Thứ Sáu, được xác định từ cùng phép đếm ngày đó.
Công cụ chuyển đổi hiển thị kết quả theo múi giờ mà trình duyệt của bạn báo cáo, không phải UTC. Người đọc ở New York sẽ thấy cùng dấu thời gian đó là Thứ Năm, 31 tháng 12, 2020, 19:00:00, vì hôm đó New York chậm hơn UTC năm giờ.
Dấu thời gian cũng có thể là số âm, biểu thị một ngày trước 1970. Ví dụ, -86400 chính xác là một ngày trước kỷ nguyên: 31 tháng 12, 1969, 00:00:00 UTC.
Độ chính xác của dấu thời gian: giây, mili giây và micro giây
Không phải hệ thống nào cũng đo thời gian bằng giây. Công cụ chuyển đổi xem dấu thời gian có bao nhiêu chữ số và phỏng đoán độ chính xác của nó:
| Chữ số | Độ chính xác | Ví dụ |
|---|---|---|
| 10 | Giây | 1609459200 |
| 13 | Mili giây | 1609459200000 |
| 16 | Micro giây | 1609459200000000 |
Dấu thời gian âm có thêm một ký tự cho dấu trừ, nên -1609459200 (11 ký tự, 10 chữ số) vẫn được đọc là giây. Mọi số lượng chữ số khác đều được coi là giây thông thường. Các giá trị mili giây và micro giây được chia cho 1.000 hoặc 1.000.000 trước khi áp dụng công thức tính giây ở trên.
Định dạng thời gian 12 giờ và 24 giờ
Công cụ chuyển đổi cung cấp hai cách hiển thị thời gian trong ngày.
- Định dạng 24 giờ đếm số giờ từ 0 đến 23, không có nhãn SA hoặc CH. Lập trình viên đôi khi gọi cách này là giờ quân sự. 3:00 buổi chiều được viết là 15:00.
- Định dạng 12 giờ đếm số giờ từ 1 đến 12, thêm SA cho khoảng thời gian từ nửa đêm đến trưa và CH cho khoảng thời gian từ trưa đến nửa đêm. 15:00 theo định dạng 24 giờ trở thành 3:00 CH.
Định dạng 24 giờ là tiêu chuẩn ở phần lớn châu Âu, Mỹ Latinh và châu Á, cũng như trong các môi trường khoa học, quân sự và y tế trên toàn thế giới. Định dạng 12 giờ vẫn phổ biến trong đời sống hằng ngày ở Hoa Kỳ, Canada và một số quốc gia nói tiếng Anh khác.
Phạm vi ngày tháng được hỗ trợ
Công cụ chuyển đổi này chấp nhận mọi dấu thời gian từ -62135596800 đến 253402300799. Phạm vi đó bao phủ mọi ngày từ 1 tháng 1 của năm 1 đến 31 tháng 12, 9999, theo lịch Gregory mở rộng về quá khứ (lịch hiện đại được áp dụng ngược về trước thời điểm 1582 được đưa vào sử dụng). Dấu thời gian nằm ngoài phạm vi đó sẽ bị từ chối với lỗi phạm vi.
Vấn đề Năm 2038
Nhiều hệ thống máy tính cũ lưu dấu thời gian Unix dưới dạng số nguyên có dấu 32 bit, chỉ có thể đếm đến 2.147.483.647. Số giây đó sau kỷ nguyên rơi vào 19 tháng 1, 2038, lúc 03:14:07 UTC. Sau thời điểm đó, một hệ thống 32 bit chưa được vá sẽ quay vòng về số âm và đọc ngày là năm 1901 thay vì 2038. Đây được gọi là vấn đề Năm 2038. Vấn đề này không ảnh hưởng đến mọi hệ thống: phần mềm hiện đại lưu dấu thời gian dưới dạng số 64 bit hoặc dưới dạng số thông thường như JavaScript có thể biểu diễn các ngày cách sau 2038 hàng nghìn năm mà không bị tràn số.
Các cách sử dụng phổ biến của dấu thời gian Unix
Dấu thời gian Unix xuất hiện trong nhiều lĩnh vực điện toán vì chúng gọn và dễ so sánh hoặc sắp xếp:
- Các hàng trong cơ sở dữ liệu dùng chúng để ghi lại thời điểm một bản ghi được tạo hoặc thay đổi lần cuối.
- Máy chủ web dùng chúng trong tiêu đề HTTP và cookie để kiểm soát bộ nhớ đệm và thời hạn.
- Tệp nhật ký gắn dấu thời gian cho từng sự kiện, nhờ đó các mục có thể được xếp theo thứ tự.
- Git và các hệ thống quản lý phiên bản khác ghi lại thời điểm commit theo cách này.
- API web dùng chúng để đánh dấu thời điểm dữ liệu được tạo hoặc cập nhật lần cuối.
Các câu hỏi thường gặp
Kỷ nguyên Unix là gì? Kỷ nguyên Unix là nửa đêm UTC vào 1 tháng 1, 1970. Đây là mốc 0 mà mọi dấu thời gian Unix đều tính từ đó.
Dấu thời gian Unix có bao gồm giây nhuận không? Không. Thời gian Unix đếm chính xác 86.400 giây mỗi ngày và bỏ qua các giây nhuận đôi khi được thêm vào UTC, nên hơi lệch so với thời gian thiên văn.
Dấu thời gian Unix có thể là số âm không? Có. Giá trị âm biểu thị một ngày trước 1 tháng 1, 1970.
Tại sao dấu thời gian của tôi có 13 chữ số thay vì 10?
Dấu thời gian có 13 chữ số được tính bằng mili giây thay vì giây. Date.now() của JavaScript và nhiều API web trả về dấu thời gian tính bằng mili giây, đó là lý do các giá trị có 13 chữ số phổ biến trong phát triển web.
Dấu thời gian Unix có giống nhau ở mọi múi giờ không? Bản thân con số không gắn với múi giờ nào. Nó luôn đếm số giây kể từ kỷ nguyên theo UTC. Việc chuyển đổi nó thành ngày và giờ địa phương có nghĩa là cộng độ lệch của múi giờ đó, vì vậy đầu ra của công cụ này tuân theo múi giờ của thiết bị đang chạy nó.
Ngày muộn nhất mà công cụ chuyển đổi này có thể xử lý là ngày nào? 31 tháng 12, 9999, lúc 23:59:59 UTC, tương ứng với dấu thời gian 253402300799. Ngày sớm nhất là 1 tháng 1 của năm 1, lúc 00:00:00 UTC, tương ứng với dấu thời gian -62135596800.