Unix timestamp và cách mã hóa dưới dạng số
18/03/2023 03:04 am | Lượt xem : 7327
Unix timestamp là một hệ thống máy tính sử dụng để đo thời gian, nó có ý nghĩa lớn trong lập trình. Bài viết dưới đây sẽ cho bạn cái nhìn tổng quát nhất về Unix timestamp.
Contents
Unix timestamp là gì?
Hai lớp mã hóa tạo nên unix timestamp.
Lớp đầu tiên là lớp mã hóa một thời điểm dưới dạng số thực vô hướng. Lớp thứ hai mã hóa số đó dưới dạng chuỗi bit hoặc chữ số thập phân.
Unix timestamp khác với cả Giờ phối hợp quốc tế (UTC) và Giờ nguyên tử quốc tế (TAI) khi xử lý về vấn đề giây nhuận. Mỗi ngày chứa chính xác 86400 giây và đương nhiên, các giây nhuận đều được tính. Mỗi giây nhuận sử dụng dấu thời gian của giây ngay trước hoặc sau nó.
Mã hóa thời gian dưới dạng số
Unix timestamp là một chữ số được ký trên mỗi giây, giúp quá trình ghi nhớ và lưu trữ vào máy tính dễ dàng hơn so với các hệ thống thông thường. Sau đó, người dùng sẽ đọc hiểu được thông qua các chương trình phiên dịch từ bản ghi chép.
Unix timestamp được tính là lúc 00:00:00 UTC ngày 1 tháng 1 năm 1970. Tuy nhiên, UTC không tồn tại giống như hiện giờ cho đến tận năm 1972. Phần thời gian này được thống nhất sử dụng định dạng ngày và giờ của ISO, trong đó Unix epoch là 1970-01-01T00:00:00Z.
Số unix timestamp được tính bằng 0 tại kỷ nguyên Unix và con số này tăng lên 86400 mỗi ngày kể từ mốc thời gian đó.
Do đó, 2004-09-16T00:00:00Z, 12677 ngày sau kỷ nguyên, được biểu thị bằng số thời gian Unix 12677 × 86400 = 1095292800. Điều này cũng có thể được mở rộng ngược từ kỷ nguyên, sử dụng các số âm; do đó 1957-10-04T00:00:00Z, 4472 ngày trước kỷ nguyên, được biểu thị bằng số thời gian Unix −4472 × 86400 = −386380800.
Điều này cũng được áp dụng với một số thời điểm trong ngày, cụ thể, thời gian tại một thời điểm trong ngày được tính bằng số giây đã trôi qua kể từ nửa đêm bắt đầu từ ngày hôm đó được cộng với số thời gian của nửa đêm đó.
Trong một số trường hợp, unix timestamp bị gọi nhầm là thời gian Epoch, vì unix timestamp dựa trên một kỷ nguyên và do hiểu lầm phổ biến rằng kỷ nguyên Unix là kỷ nguyên duy nhất
Giây nhuận
Trong một ngày bình thường của UTC sẽ có 86400 giây, số unix timestamp thay đổi liên tục trong suốt nửa đêm.
Khi một giây nhuận xảy ra, ngày UTC không dài chính xác 86400 giây và unix timestamp lúc này xuất hiện tình trạng gián đoạn. Giây nhuận trong trường hợp này bao gồm cả dương hoặc âm.
Đối với giây nhuận âm, số thời gian Unix sẽ tăng thêm 1 cho đến đầu ngày hôm sau.
Giây nhuận dương
Giây nhuận dương vào cuối ngày xảy ra trung bình khoảng một năm rưỡi một lần, số unix timestamp tăng lên liên tục sang ngày tiếp theo trong giây nhuận và sau đó vào cuối giây nhuận sẽ nhảy 1 ngày.
Số unix timestamp được lặp lại ngay sau giây nhuận dương. Vì thế trong một số trường hợp, unix timestamp không rõ ràng. Bởi nó có thể đề cập đến bắt đầu của giây nhuận (2016-12-31 23:59:60) hoặc kết thúc của nó, một giây sau (2017-01-01 00:00: 00).
Giây nhuận âm
Đối với giây nhuận âm, không có sự mơ hồ nào được gây ra, tuy nhiên, có một loạt các số unix timestamp hoàn toàn không đề cập đến bất kỳ điểm nào trong thời gian UTC.
Đồng hồ Unix thường được triển khai với một kiểu xử lý giây nhảy vọt tích cực khác được liên kết với Giao thức thời gian mạng (NTP). Điều này tạo ra một hệ thống không phù hợp với tiêu chuẩn POSIX. Xem phần bên dưới liên quan đến NTP để biết chi tiết.
Khi xử lý các khoảng thời gian không bao gồm giây nhuận UTC, sự khác biệt giữa hai số thời gian Unix bằng với khoảng thời gian tính bằng giây của khoảng thời gian giữa các điểm thời gian tương ứng. Đây là một kỹ thuật tính toán phổ biến. Tuy nhiên, khi giây nhuận xảy ra, các tính toán như vậy đưa ra câu trả lời sai. Trong các ứng dụng yêu cầu mức độ chính xác này, cần tham khảo bảng giây nhuận khi xử lý thời gian Unix và thường tốt hơn là sử dụng mã hóa thời gian khác không gặp sự cố này.
Unix timestamp và thời gian UTC có thể dễ dàng chuyển đổi cho nhau bằng cách lấy thương số và mô đun của số thời gian Unix, modulo 86400. Thương số là số ngày kể từ kỷ nguyên và mô đun là số giây kể từ đó.
Lịch sử của Unix timestamp
Những phiên bản đầu tiên của Unix timestamp có số nguyên 32 bit tăng dần với tốc độ 60 Hz, cũng chính là tốc độ của đồng hồ hệ thống trên phần cứng của các hệ thống Unix đầu tiên.
Tuy nhiên sau đó giá trị 60Hz vẫn xuất hiện trong một số giao diện phần mềm.
Đến năm 1971, unix timestamp vẫn đếm thời gian bằng 60 giây tính từ ngày 1 tháng 1 năm 1971, tức là thời gian muộn hơn so với kỷ nguyên hiện đang được sử dụng.
Các kỹ sư Unix đã lựa chọn kỷ nguyên hiện lại là ngày 1 tháng 1 năm 1970 00:00:00 UTC. Đồng thời để tránh tràn trong thời gian ngắn, độ chính xác được quy ước tính bằng giây.
Các kỹ sư sau đó cần phải xác định chính xác thời gian khi xảy ra tình trạng giây nhuận. Sau đó POSIX đã đưa ra phương án liệu có nên duy trì unix timestamp hay không, kết quả là với một số giây tuyến tính kể từ kỷ nguyên hay không, với chi phí phức tạp trong chuyển đổi với thời gian dân sự hoặc đại diện cho thời gian dân sự, với chi phí không nhất quán xung quanh giây nhuận.
Bài viết trên đã trả lời cho câu hỏi và một số vấn đề về unix timestamp.
DỊCH VỤ CLOUD SERVER TỐC ĐỘ XỬ LÝ VƯỢT TRỘI
Các tìm kiếm liên quan đến chủ đề “Unix timestamp là gì”
Unix time là gì | Convert timestamp |
Epoch time là gì | Chuyển đổi Date sang timestamp PHP |
Unix timestamp | Unix timestamp js |
Unix timestamp to date | Convert timestamp to date |