2 điểm bởi GN⁺ 2024-10-31 | 1 bình luận | Chia sẻ qua WhatsApp
  • Múi giờ rất phức tạp, nhưng vì máy tính phải triển khai chúng nên mức độ kỳ lạ chỉ nằm trong một phạm vi hữu hạn.
    • Asia/Kathmandu có độ lệch bất thường so với UTC.
    • Africa/Casablanca không khớp tốt với mô hình múi giờ nên được hard-code.
    • America/Nuuk bắt đầu giờ mùa hè từ -01:00.
    • Africa/CairoAmerica/Santiago bắt đầu giờ mùa hè vào 24 giờ (không phải 0 giờ).
    • Australia/Lord_Howe có quy tắc giờ mùa hè kỳ lạ nhất.

PGXIIREAM: Giáo hoàng Gregory XIII chi phối mọi thứ

  • Phần lớn thế giới sử dụng hệ thống thời gian dựa trên lịch Gregory.
  • Lịch Gregory rất hữu ích trong việc giữ vị trí của mặt trời ổn định theo năm.
  • UTC là sự chính thức hóa hiện đại của lịch Gregory, và cả thế giới đặt thời gian dựa trên chuẩn này.

Giây nhuận không quan trọng

  • Sự quay của Trái Đất đang chậm lại nên người ta thêm giây nhuận để bù lại.
  • Có thể bỏ qua giây nhuận vì các ngôn ngữ lập trình không biểu diễn 61 giây.
  • Các nhà cung cấp cloud giải quyết vấn đề bằng cách cho đồng hồ chạy chậm lại trong thời gian có giây nhuận.

Những múi giờ kỳ lạ

Asia/Kathmandu có độ lệch bất thường

  • Nepal đi trước UTC 5 giờ 45 phút.
  • Máy tính có thể biết thông tin này thông qua cơ sở dữ liệu múi giờ IANA.

Các chuỗi như PDT hay CET không có nhiều ý nghĩa

  • Định danh múi giờ có thể mơ hồ, và nhiều múi giờ cùng chia sẻ một định danh.

Múi giờ có giờ mùa hè được biểu diễn như thế nào?

  • Quy tắc chuyển sang giờ mùa hè rất phức tạp, và máy tính tính giờ địa phương dựa trên đó.

Africa/CasablancaAsia/Gaza đi theo mặt trăng, còn múi giờ đi theo mặt trời

  • Morocco và Gaza điều chỉnh giờ mùa hè theo Ramadan, nên điều này được hard-code.

America/Nuuk chuyển sang giờ mùa hè lúc -1 giờ

  • Greenland bắt đầu giờ mùa hè cùng thời điểm với châu Âu, nhưng theo giờ địa phương thì là lúc -1 giờ.

America/SantiagoAfrica/Cairo chuyển đổi vào 24 giờ

  • Các múi giờ này chuyển sang giờ mùa hè vào 24 giờ, tức là bước sang ngày hôm sau.

Australia/Lord_Howe có lần chuyển giờ mùa hè kỳ lạ nhất

  • Đảo Lord Howe có bước chuyển giờ mùa hè 30 phút.

Tóm tắt của GN⁺

  • Múi giờ rất phức tạp, nhưng vì máy tính phải triển khai chúng nên mức độ kỳ lạ chỉ nằm trong một phạm vi hữu hạn.
  • Australia/Lord_Howe là múi giờ độc đáo nhất với bước chuyển giờ mùa hè 30 phút.
  • Bài viết này hữu ích để hiểu sự phức tạp của múi giờ và có thể khiến lập trình viên thấy thú vị.
  • Một dự án có chức năng tương tự là tzdb.

1 bình luận

 
GN⁺ 2024-10-31
Ý kiến trên Hacker News
  • Cơ sở dữ liệu tz không tính các lần chuyển đổi múi giờ trước Vụ Nổ Lớn. Dấu thời gian trước Vụ Nổ Lớn là điều đáng nghi về mặt vật lý

    • Ví dụ, Glib vẫn áp dụng quy tắc của Brazil năm 1913 để tính dấu thời gian của São Paulo
    • Cũng không cho phép giây nhuận trước Vụ Nổ Lớn
  • Múi giờ Châu Phi/Addis_Ababa không được bất kỳ ai ở Ethiopia tuân theo

    • Người dân địa phương dùng thời gian lệch 6 tiếng
    • Chu kỳ AM bắt đầu vào lúc rạng sáng, và chu kỳ PM bắt đầu vào lúc hoàng hôn
  • Việc các ngôn ngữ lập trình không thể biểu diễn phút có 61 giây là không đúng

    • Raku hỗ trợ giây nhuận
    • DateTime.pm của Perl 5 cũng hỗ trợ giây nhuận, điều này làm tăng độ phức tạp
    • Giây nhuận hầu như không được dùng và làm tăng độ phức tạp của mã
  • Múi giờ Châu Á/Jerusalem phức tạp do các vấn đề tôn giáo và quốc gia

    • Vì lý do tôn giáo, giờ tiết kiệm ánh sáng ban ngày được quyết định bằng đàm phán mỗi năm
    • Có ngoại lệ để giờ tiết kiệm ánh sáng ban ngày không kết thúc vào Rosh HaShanah
  • Kinh nghiệm viết hàm tìm giờ địa phương dựa trên địa chỉ ở Mỹ

    • Việc ánh xạ tĩnh giữa bang và múi giờ là khó vì các trường hợp biên
    • Đã mua và dùng một file CSV ánh xạ mã ZIP với độ lệch UTC
    • Tồn tại các múi giờ phức tạp do các lãnh thổ hải ngoại và căn cứ quân sự của Mỹ
  • Múi giờ của Palestine là mỗi năm chính phủ công bố thời điểm bắt đầu và kết thúc giờ tiết kiệm ánh sáng ban ngày mà không có ngày cố định

    • Thông báo trước chưa đến một tuần có thể gây ra nhiều vấn đề khác nhau
  • Bài đọc thú vị về tính linh hoạt của phần mềm múi giờ

    • Chính sách giờ tiết kiệm ánh sáng ban ngày có thể không bị giới hạn ở việc điều chỉnh 60 phút
    • Một quốc gia có thể có độ lệch thay đổi liên tục trong năm
  • Khi chính phủ bãi bỏ giờ tiết kiệm ánh sáng ban ngày rồi năm sau lại dịch chuyển múi giờ thì sẽ gây hỗn loạn

    • Khi phát triển ứng dụng Android, đã phát sinh vấn đề do cơ sở dữ liệu múi giờ được nhúng trong system image
  • Cơ sở dữ liệu tz là diff của diff ghi lại chênh lệch với UTC

    • Các bản cập nhật được thực hiện, và changelog được lưu trong git
    • Có thể biểu diễn thành diff^4
  • Chênh lệch giờ tiết kiệm ánh sáng ban ngày 30 phút không phải là múi giờ kỳ lạ nhất

    • Nam Cực/Troll, Morocco và Gaza có các quy tắc mà hệ thống không thể biểu diễn
    • Giây nhuận không hữu ích với lập trình viên và phần lớn bị bỏ qua