12 điểm bởi winterjung 2022-11-26 | 4 bình luận | Chia sẻ qua WhatsApp
  • Không phải là nói rằng UTC (Giờ Phối hợp Quốc tế) là tệ
  • Đại hội đồng Cân đo Quốc tế đã quyết định bãi bỏ giây nhuận khỏi UTC sau năm 2035
  • Giây nhuận liên quan đến sự quay của Trái Đất, vốn không đều và không thể dự đoán chính xác
  • Ngoài UTC, một trong những chuẩn thời gian quan trọng khác là TAI (Thời gian Nguyên tử Quốc tế), không có giây nhuận
  • UTC chủ yếu không được dùng cho mục đích kỹ thuật, nên có thể chấp nhận việc có giây nhuận, nhưng thời gian Unix lại trở nên không tuyến tính vì giây nhuận và gây ra nhiều nhầm lẫn

Thời gian Unix TAI

  • Thời gian Unix TAI, bắt đầu từ 0 giờ 0 phút 10 giây ngày 1 tháng 1 năm 1970, tăng tuyến tính và có các tính chất toán học hữu ích, nhưng không phổ biến
  • Nó khác với thời gian Unix và không thể thay thế lẫn nhau
  • So với thời gian Unix
    • Vì tuyến tính, có thể tính rất dễ khi nào là t + 1 giây, t + 100000000 giây. Với thời gian Unix thì không thể tính chính xác vì không biết khi nào các giây nhuận trong tương lai sẽ xảy ra, chỉ có thể dự đoán
    • Có thể dễ dàng tính chênh lệch giữa hai dấu thời gian
    • Việc tính ngày hoặc giờ thì khó hơn. Thông thường chúng ta muốn biết thời gian UTC chứ không phải thời gian TAI, nên phải phản ánh các giây nhuận
    • Không mơ hồ và chỉ trả về các giá trị hợp lệ

Chuyển sang thời gian Unix TAI mà không gây sự cố lớn

  • Đề xuất trong tiêu chuẩn POSIX là chia thời gian thành ba loại: thời gian Unix, thời gian Unix TAI+C, và thời gian Unix kế thừa
  • Thời gian Unix kế thừa sẽ trả về thời gian Unix hiện tại trước một thời điểm nhất định, và sau đó trả về thời gian Unix TAI+C
  • Vì giây nhuận phụ thuộc vào các tài nguyên trực tuyến, nên việc chuyển đổi vào năm 2035, thời điểm giây nhuận bị bãi bỏ, là hợp lý

4 bình luận

 
galadbran 2022-12-01

Tôi nghĩ mình nên đọc kỹ hơn một chút nên đã thử dịch đại khái!

https://weblog2.wafe.kr/posts/translation-unix-time-bad/

 
galadbran 2022-11-26

Ý là “thời gian Unix” ở đây chỉ unix timestamp thường dùng thôi đúng không?
Vì nó là thứ mình vẫn dùng hằng ngày nên trước giờ chẳng nghĩ gì, nhưng nếu vậy thì có nghĩa là các OS như Linux sẽ trả về timestamp có phản ánh cả các giây nhuận đã qua nhỉ? Đúng là chuyện rất lớn...

 
tribela 2022-11-27

Ngược lại mới đúng. Vì giây nhuận gần với việc biến 1 giây thực trong đời thực thành khoảng thời gian như chưa từng tồn tại, nên với một OS được căn theo UTC thì chỉ cần tính toán bằng timestamp là sẽ ra Unix time, còn ngược lại phải cộng thêm giây nhuận đã thực sự tồn tại thì mới ra giá trị TAI.

 
winterjung 2022-11-26