Dear all,

 

I was looking at some Unicode ICU test failure on Ubuntu related to time zone.

 

ICU utilizes TZ database including backward file. In backward file, Europe/Tiraspol is defined as a link of Europe/Chisinau. So the actual rule is coming from Europe/Chisinau as below (2023c)

 

# Zone   NAME                   STDOFF RULES    FORMAT               [UNTIL]

Zone      Europe/Chisinau               1:55:20 -              LMT       1880

                                                1:55       -               CMT       1918 Feb 15 # Chisinau MT

                                                1:44:24 -               BMT       1931 Jul 24 # Bucharest MT

                                                2:00       Romania               EE%sT   1940 Aug 15

                                                2:00       1:00       EEST       1941 Jul 17

                                                1:00       C-Eur     CE%sT   1944 Aug 24

                                                3:00       Russia    MSK/MSD            1990 May  6  2:00

                                                2:00       Russia    EE%sT   1992

                                                2:00       E-Eur      EE%sT   1997

# See Romania commentary for the guessed 1997 transition to EU rules.

                                                2:00       Moldova               EE%sT

 

I found behavior of Europe/Tiraspol is different on Ubuntu. When I set Europe/Tiraspol as the system time zone, the default offset set to timezone variable becomes -10800 (3 hour ahead of UTC). However, Europe/Chisinau above shows it should be -7200 (2 hour ahead of UTC) at this moment. (POSIX timezone variable should store “standard offset”, not counting daylight adjustment).

 

On Ubuntu, when I set Europe/Tiraspol as system time zone, -10800 is set to timezone variable. However, when I set Europe/Chisinau, it changes to -7200. Then I realized Ubuntu is using backzone file, which contains different rule.

 

In backzone file, Europe/Tiraspol is defined as below (2023c)

 

# Moldova / Transnistria

Zone      Europe/Tiraspol 1:58:32 -               LMT       1880

                                                1:55       -               CMT       1918 Feb 15 # Chisinau MT

                                                1:44:24 -               BMT       1931 Jul 24 # Bucharest MT

                                                2:00       Romania               EE%sT   1940 Aug 15

                                                2:00       1:00       EEST       1941 Jul 17

                                                1:00       C-Eur     CE%sT   1944 Aug 24

                                                3:00       Russia    MSK/MSD            1991 Mar 31  2:00

                                                2:00       Russia    EE%sT   1992 Jan 19  2:00

                                                3:00       Russia    MSK/MSD

 

I understand backzone was created for preserving zone definition of some locations which only differs pre-1970 date, and these data might not be reliable. In reality, I think most of TZ database consumer still rely on either backward or backzone for backward compatibility. I think it’s problematic if these two files produce different results today.

 

I guess the zone definition in backzone file might be outdated, and Tiraspol is actually UTC+2/+3.

 

-Yoshito