tzdb 2024b: 6 thay đổi múi giờ

Xem 6 thay đổi múi giờ trong IANA tzdb 2024b, phát hành ngày 4 tháng 9, 2024, cùng liên kết tới các quốc gia và múi giờ liên quan.

Ngày phát hành: · Tự động tạo từ dữ liệu nguồn.

Đăng tại Time Dozen:

Nguồn: IANA

Phần tóm tắt và thay đổi mốc thời gian được dịch từ ghi chú phát hành IANA; mục gập bên dưới giữ nguyên văn tiếng Anh.

Tóm tắt

  • Cải thiện dữ liệu lịch sử của Mexico, Mongolia và Portugal.
  • Các tên System V nay đã lỗi thời.
  • Dạng dữ liệu chính nay dùng %z.
  • Mã nguồn nay tuân thủ RFC 8536 đối với các mốc thời gian sớm.
  • Hỗ trợ POSIX.1-2024, vốn loại bỏ asctime_r và ctime_r.
  • Giả định POSIX.2-1992 trở lên cho các shell script.
  • SUPPORT_C89 nay mặc định là 1.

Thay đổi mốc thời gian quá khứ

  • Asia/Choibalsan nay là bí danh của Asia/Ulaanbaatar thay vì là một Zone riêng với hành vi khác trước tháng 4 năm 2008. Cách này có vẻ hợp lý hơn do thông tin về lịch sử múi giờ của Mongolia mâu thuẫn nhau rất nhiều. (Cảm ơn Heitor David Pinto.)
  • Các lần chuyển đổi lịch sử của Mexico đã được cập nhật dựa trên các sắc lệnh chính thức của Mexico. Các mốc thời gian bị ảnh hưởng nằm trong các năm 1921-1927, 1931, 1945, 1949-1970 và 1981-1997. Các zone bị ảnh hưởng là America/Bahia_Banderas, America/Cancun, America/Chihuahua, America/Ciudad_Juarez, America/Hermosillo, America/Mazatlan, America/Merida, America/Mexico_City, America/Monterrey, America/Ojinaga và America/Tijuana. (Cảm ơn Heitor David Pinto.)
  • Các lần chuyển đổi lịch sử của Portugal, đại diện bởi Europe/Lisbon, Atlantic/Azores và Atlantic/Madeira, đã được cập nhật dựa trên việc đọc kỹ các văn bản pháp luật cũ của Bồ Đào Nha, thay cho dữ liệu trước đây chủ yếu bắt nguồn từ Whitman và Shanks & Pottenger. Các thay đổi này ảnh hưởng một vài lần chuyển đổi trong 1917-1921, 1924 và 1940 ở các vùng này, lệch vài giờ hoặc vài ngày, và nhiều mốc thời gian giữa 1977 và 1993 tùy vùng. Đặc biệt, Azores và Madeira không áp dụng DST từ 1977 đến 1981. Ngoài ra, việc áp dụng giờ theo múi chuẩn ở các thuộc địa cũ của Bồ Đào Nha đã được điều chỉnh: Africa/Maputo năm 1909, và Asia/Dili lệch 22 phút vào đầu năm 1912. (Cảm ơn Tim Parenti.)

Thay đổi dữ liệu

  • Các tên chỉ tồn tại để tương thích với UNIX System V (bản phát hành cuối vào thập niên 1990) đã được chuyển sang 'backward'. Các tên này, với các mốc thời gian sau 1970 chủ yếu chỉ lặp lại dữ liệu của các tên địa lý, đã gây nhầm lẫn cho các bên sử dụng hạ nguồn. Các tên được chuyển sang 'backward' nay là Link tới các tên địa lý. Điều này ảnh hưởng hành vi của TZ='EET' với một số mốc thời gian trước 1981, của TZ='CET' với một số mốc thời gian trước 1947, và của TZ='WET' với một số mốc thời gian trước 1996. Ngoài ra, TZ='MET' nay hoạt động như TZ='CET' và do đó dùng tên viết tắt "CET" thay vì "MET". Ai cần hành vi TZDB trước đây, vốn không khớp với đồng hồ thực tế nào, có thể tìm các mục cũ trong 'backzone'. (Lỗi do Justin Grant báo.)
  • Tên viết tắt múi giờ trong các tệp nguồn chính nay dùng %z, vốn được zic hỗ trợ từ bản phát hành 2015f và được dùng ở dạng vanguard từ bản phát hành 2022b. Ví dụ, America/Sao_Paulo nay chứa dòng tiếp nối zone "-3:00 Brazil %z", ít dễ sai hơn so với dòng cũ "-3:00 Brazil -03/-02". Điều này không thay đổi dữ liệu được biểu diễn: các tệp TZif được tạo ra không đổi. Dạng rearguard vẫn tránh dùng %z, để hỗ trợ các trình phân tích đã lỗi thời.
  • Asia/Almaty đã bị xóa khỏi zonenow.tab vì nay nó trùng với Asia/Tashkent đối với các mốc thời gian trong tương lai, do Kazakhstan đổi múi giờ vào 2024-02-29. Tương tự, America/Scoresbysund cũng bị xóa vì nay nó trùng với America/Nuuk do thay đổi múi giờ ngày 2024-03-31.
Ghi chú khác của bản này (mã nguồn, quy trình build, tài liệu), nguyên văn tiếng Anh

Changes to past tm_isdst flags

  • The period from 1966-04-03 through 1966-10-02 in Portugal is now modeled as DST, to more closely reflect how contemporaneous changes in law entered into force.

Changes to code

  • localtime.c now always uses a TZif file's time type 0 to handle timestamps before the file's first transition. Formerly, localtime.c sometimes inferred a different time type, in order to handle problematic data generated by zic 2018e or earlier. As it is now safe to assume more recent versions of zic, there is no longer a pressing need to fail to conform RFC 8536 section 3.2, which requires using time type 0 in this situation. This change does not affect behavior when reading TZif files generated by zic 2018f and later.
  • POSIX.1-2024 removes asctime_r and ctime_r and does not let libraries define them, so remove them except when needed to conform to earlier POSIX. These functions are dangerous as they can overrun user buffers. If you still need them, add -DSUPPORT_POSIX2008 to CFLAGS.
  • The SUPPORT_C89 option now defaults to 1 instead of 0, fixing a POSIX-conformance bug introduced in 2023a.
  • tzselect now supports POSIX.1-2024 proleptic TZ strings. Also, it assumes POSIX.2-1992 or later, as practical porting targets now all support that, and it uses some features from POSIX.1-2024 if available.

Changes to build procedure

  • 'make check' no longer requires curl and Internet access.
  • The build procedure now assumes POSIX.2-1992 or later, to simplify maintenance. To build on Solaris 10, the only extant system still defaulting to pre-POSIX, prepend /usr/xpg4/bin to PATH.

Changes to documentation

  • The documentation now reflects POSIX.1-2024.

Changes to commentary

  • Commentary about historical transitions in Portugal and her former colonies has been expanded with links to relevant legislation. (Thanks to Tim Parenti.)