Số giây đã trôi qua kể từ Epoch
(aphyr.com)-
Số giây kể từ Epoch
-
Thời gian POSIX, hay thời gian Unix, thường được cho là số giây kể từ 00:00:00 ngày 1 tháng 1 năm 1970. Tuy nhiên, điều này không chính xác. Ví dụ, thời gian POSIX của 2024-12-25 18:54:53 UTC là 1735152686, thấp hơn 29 giây so với số giây thực tế đã trôi qua là 1735152715.
-
Thời gian POSIX được suy ra từ Giờ Phối hợp Quốc tế (UTC) trong IEEE 1003.1. Tiêu chuẩn này giả định mỗi ngày dài đúng 86.400 giây. Nhưng trên thực tế, độ dài của một ngày không phải lúc nào cũng là 86.400 giây và thay đổi theo thời gian. Để điều chỉnh điều này, các nhà thiên văn học định kỳ công bố giây nhuận cho UTC.
-
-
Khảo cổ học
-
Phụ lục B của IEEE 1003 có một phần thảo luận thú vị về giây nhuận. Vào thời điểm tiêu chuẩn được ban hành, đã có 14 giây nhuận được thêm vào kể từ ngày 1 tháng 1 năm 1970. Các giây nhuận này bị bỏ qua để việc tính chênh lệch thời gian trở nên dễ dàng hơn.
-
Hầu hết các hệ thống xem thời gian là một giá trị tăng liên tục. Nhưng đa số hệ thống không theo dõi giây nhuận và cũng không được đồng bộ với tham chiếu thời gian chuẩn. Vì vậy, yêu cầu rằng số giây kể từ Epoch phải biểu thị chính xác số giây giữa thời điểm được tham chiếu và Epoch là không phù hợp.
-
Cách diễn giải nhất quán về số giây kể từ Epoch có thể quan trọng với một số loại ứng dụng phân tán. Sự tích lũy của giây nhuận là không thể dự đoán, và số giây nhuận kể từ Epoch có khả năng sẽ tiếp tục tăng.
-
-
Nên làm gì thay thế
-
Để tính khoảng thời gian giữa hai sự kiện trên một máy tính, nên dùng
CLOCK_MONOTONIC. Nếu không cần trao đổi thời gian POSIX với các hệ thống khác, có thể dùng TAI, GPS hoặc LORAN. -
Nếu cần căn chỉnh tương đối với hệ thống dấu thời gian POSIX, có thể phân tán giây nhuận trên một khoảng thời gian dài hơn. Các thư viện như
qntmcủat-a-ihỗ trợ chuyển đổi giữa POSIX và TAI. -
Hiện đang có các nỗ lực nhằm loại bỏ giây nhuận, với hy vọng hoàn tất vào năm 2035. Điều này sẽ đòi hỏi thêm công sức để xây dựng bảng chuyển đổi cho mọi thứ đang dựa trên giả định “mỗi ngày có 86.400 giây”, nhưng sẽ giúp việc hỏi có bao nhiêu giây giữa hai thời điểm trở nên đơn giản hơn. Ít nhất là đối với các thời điểm sau năm 2035.
-
1 bình luận
Ý kiến trên Hacker News
Đã đọc cuốn sách SF "A Deepness in the Sky". Thấy phần nhắc đến số giây kể từ epoch trong sách rất thú vị
Đang có những nỗ lực nhằm loại bỏ leap second, và hy vọng sẽ hoàn tất vào năm 2035
"UTC epoch" hiện đại là ngày 1 tháng 1 năm 1972
Mỗi lần đọc về đo thời gian lại học thêm được điều mới
Gần đây đã làm việc với VAX, hoặc với mã chạy trên OpenVMS, và lần đầu thấy epoch là ngày 17 tháng 11 năm 1858
Có những thời điểm không thể biểu diễn bằng dấu thời gian POSIX, và cũng có những dấu thời gian POSIX không khớp với thời gian thực
Nghĩ rằng bài viết này đã phá hỏng Giáng sinh
Khi lưu ngày tháng vào cơ sở dữ liệu, luôn lưu dưới dạng thời gian Unix epoch, còn thông tin múi giờ thì lưu riêng
Khoảng 10 năm trước tại một hội nghị, đã nghe nói Google không dùng leap second mà phân tán nó vào các giây thông thường
Tò mò liệu có cách đo thời gian nào vừa được đồng bộ vừa tăng đơn điệu hay không