Question about timezone database format

I am reading from the timezone files created in the Olson database to find out when the time intervals change and what they change. The time zone file format is described in tzfile.h .

On my question, I will use the data that I received for Europe / Rome.

It may be working correctly because my output correctly matches what timeanddate.com says. For example, my program correctly says that:

March 28, 1982 02:00:00 the time zone changes to GMT +2.000000.

September 26, 1982 03:00:00 the time zone changes to GMT +1.000000.

This is confirmed here: http://www.timeanddate.com/worldclock/clockchange.html?n=215&year=1982

However, I'm not sure if I need to use tzh_ttisstdcnt and tzh_ttisgmtcnt.

From tzfile.h:

Then there are tzh_ttisstdcnt standard / wall indicators, each of which is stored as a single-byte value; they report transition time related local time types as the standard time or wall clock time, and are used when the time zone file used in processing POSIX-style time zone environment variables.

Finally, there is tzh_ttisgmtcnt UTC / local indicators, each of which is stored as a single-byte value; they report time-related transitions with local time types indicated as UTC or local time, and are used when using the time zone file when processing time zones in POSIX-style environment variables.

I found that each “time type” (ttinfo struct) has bytes isstd and isgmt. These are 6 “temporary types” for Europe / Rome:

  Type 0, CEST, DST? = 1, GMT+2, isstd? = 1, isgmt? = 0 Type 1, CET, DST? = 0, GMT+1, isstd? = 1, isgmt? = 0 Type 2, CEST, DST? = 1, GMT+2, isstd? = 0, isgmt? = 0 Type 3, CET, DST? = 0, GMT+1, isstd? = 0, isgmt? = 0 Type 4, CEST, DST? = 1, GMT+2, isstd? = 1, isgmt? = 1 Type 5, CET, DST? = 0, GMT+1, isstd? = 1, isgmt? = 1 

tzfile.h makes it sound like isstd, and isgmt tells you how the transition time is saved (gmt vs localtime). However, my code currently assumes that all transition times are stored as GMT. My program output matches timeanddate.com for all 6 transition types.

Also, I don't understand how types 0 and 1 can be std, not gmt. I thought GMT was standard time.

Any explanation would be wonderful.

Edit:

It seems like my output is almost consistent with timeanddate.com when I ignore the isstd and isgmt options. I currently interpret the entire transition time as GMT:

Transition types for Rome:

new type 0: isdst = 1 offset = 7200 abbreviation = 0 isstd = 1 isgmt = 0

new type 1: isdst = 0 offset = 3600 abbreviation = 5 isstd = 1 isgmt = 0

new type 2: isdst = 1 offset = 7200 abbreviation = 0 isstd = 0 isgmt = 0

new type 3: isdst = 0 offset = 3600 abbreviation = 5 isstd = 0 isgmt = 0

new type 4: isdst = 1 offset = 7200 abbreviation = 0 isstd = 1 isgmt = 1

Data for Rome (if all transit times are indicated as GMT):

 The starting timezone is GMT+1 type: 0, transition time in file:-1690851600 Add previous offset to get transition as (localtime): June 03, 1916 00:00:00 GMT+2 **type: 1, transition time in file:-1680483600 Add previous offset to get transition as (localtime): October 01, 1916 01:00:00 GMT+1** type: 0, transition time in file:-1664758800 Add previous offset to get transition as (localtime): April 01, 1917 00:00:00 GMT+2 type: 1, transition time in file:-1649034000 Add previous offset to get transition as (localtime): September 30, 1917 01:00:00 GMT+1 type: 0, transition time in file:-1635123600 Add previous offset to get transition as (localtime): March 10, 1918 00:00:00 GMT+2 type: 1, transition time in file:-1616979600 Add previous offset to get transition as (localtime): October 06, 1918 01:00:00 GMT+1 type: 0, transition time in file:-1604278800 Add previous offset to get transition as (localtime): March 02, 1919 00:00:00 GMT+2 type: 1, transition time in file:-1585530000 Add previous offset to get transition as (localtime): October 05, 1919 01:00:00 GMT+1 type: 0, transition time in file:-1571014800 Add previous offset to get transition as (localtime): March 21, 1920 00:00:00 GMT+2 type: 1, transition time in file:-1555290000 Add previous offset to get transition as (localtime): September 19, 1920 01:00:00 GMT+1 type: 0, transition time in file:-932432400 Add previous offset to get transition as (localtime): June 15, 1940 00:00:00 GMT+2 type: 1, transition time in file:-857257200 Add previous offset to get transition as (localtime): November 02, 1942 03:00:00 GMT+1 type: 0, transition time in file:-844556400 Add previous offset to get transition as (localtime): March 29, 1943 02:00:00 GMT+2 type: 1, transition time in file:-828226800 Add previous offset to get transition as (localtime): October 04, 1943 03:00:00 GMT+1 type: 0, transition time in file:-812502000 Add previous offset to get transition as (localtime): April 03, 1944 02:00:00 GMT+2 type: 1, transition time in file:-798080400 Add previous offset to get transition as (localtime): September 17, 1944 01:00:00 GMT+1 type: 2, transition time in file:-781052400 Add previous offset to get transition as (localtime): April 02, 1945 02:00:00 GMT+2 type: 1, transition time in file:-766717200 Add previous offset to get transition as (localtime): September 15, 1945 01:00:00 GMT+1 type: 0, transition time in file:-750898800 Add previous offset to get transition as (localtime): March 17, 1946 02:00:00 GMT+2 type: 1, transition time in file:-733359600 Add previous offset to get transition as (localtime): October 06, 1946 03:00:00 GMT+1 type: 0, transition time in file:-719456400 Add previous offset to get transition as (localtime): March 16, 1947 00:00:00 GMT+2 type: 1, transition time in file:-701917200 Add previous offset to get transition as (localtime): October 05, 1947 01:00:00 GMT+1 type: 0, transition time in file:-689209200 Add previous offset to get transition as (localtime): February 29, 1948 02:00:00 GMT+2 type: 1, transition time in file:-670460400 Add previous offset to get transition as (localtime): October 03, 1948 03:00:00 GMT+1 type: 2, transition time in file:-114051600 Add previous offset to get transition as (localtime): May 22, 1966 00:00:00 GMT+2 type: 3, transition time in file:-103168800 Add previous offset to get transition as (localtime): September 25, 1966 00:00:00 GMT+1 type: 2, transition time in file:-81997200 Add previous offset to get transition as (localtime): May 28, 1967 00:00:00 GMT+2 type: 3, transition time in file:-71719200 Add previous offset to get transition as (localtime): September 24, 1967 00:00:00 GMT+1 type: 2, transition time in file:-50547600 Add previous offset to get transition as (localtime): May 26, 1968 00:00:00 GMT+2 type: 3, transition time in file:-40269600 Add previous offset to get transition as (localtime): September 22, 1968 00:00:00 GMT+1 type: 2, transition time in file:-18493200 Add previous offset to get transition as (localtime): June 01, 1969 00:00:00 GMT+2 type: 3, transition time in file:-8215200 Add previous offset to get transition as (localtime): September 28, 1969 00:00:00 GMT+1 type: 2, transition time in file:12956400 Add previous offset to get transition as (localtime): May 31, 1970 00:00:00 GMT+2 type: 3, transition time in file:23234400 Add previous offset to get transition as (localtime): September 27, 1970 00:00:00 GMT+1 type: 2, transition time in file:43801200 Add previous offset to get transition as (localtime): May 23, 1971 00:00:00 GMT+2 type: 3, transition time in file:54687600 Add previous offset to get transition as (localtime): September 26, 1971 01:00:00 GMT+1 type: 2, transition time in file:75855600 Add previous offset to get transition as (localtime): May 28, 1972 00:00:00 GMT+2 type: 3, transition time in file:86738400 Add previous offset to get transition as (localtime): October 01, 1972 00:00:00 GMT+1 type: 2, transition time in file:107910000 Add previous offset to get transition as (localtime): June 03, 1973 00:00:00 GMT+2 type: 3, transition time in file:118188000 Add previous offset to get transition as (localtime): September 30, 1973 00:00:00 GMT+1 type: 2, transition time in file:138754800 Add previous offset to get transition as (localtime): May 26, 1974 00:00:00 GMT+2 type: 3, transition time in file:149637600 Add previous offset to get transition as (localtime): September 29, 1974 00:00:00 GMT+1 type: 0, transition time in file:170809200 Add previous offset to get transition as (localtime): June 01, 1975 00:00:00 GMT+2 type: 1, transition time in file:181090800 Add previous offset to get transition as (localtime): September 28, 1975 01:00:00 GMT+1 type: 0, transition time in file:202258800 Add previous offset to get transition as (localtime): May 30, 1976 00:00:00 GMT+2 type: 1, transition time in file:212540400 Add previous offset to get transition as (localtime): September 26, 1976 01:00:00 GMT+1 type: 0, transition time in file:233103600 Add previous offset to get transition as (localtime): May 22, 1977 00:00:00 GMT+2 type: 1, transition time in file:243990000 Add previous offset to get transition as (localtime): September 25, 1977 01:00:00 GMT+1 type: 0, transition time in file:265158000 Add previous offset to get transition as (localtime): May 28, 1978 00:00:00 GMT+2 type: 1, transition time in file:276044400 Add previous offset to get transition as (localtime): October 01, 1978 01:00:00 GMT+1 type: 0, transition time in file:296607600 Add previous offset to get transition as (localtime): May 27, 1979 00:00:00 GMT+2 type: 1, transition time in file:307494000 Add previous offset to get transition as (localtime): September 30, 1979 01:00:00 GMT+1 type: 4, transition time in file:323830800 Add previous offset to get transition as (localtime): April 06, 1980 02:00:00 GMT+2 type: 5, transition time in file:338950800 Add previous offset to get transition as (localtime): September 28, 1980 03:00:00 GMT+1 type: 4, transition time in file:354675600 Add previous offset to get transition as (localtime): March 29, 1981 02:00:00 GMT+2 type: 5, transition time in file:370400400 Add previous offset to get transition as (localtime): September 27, 1981 03:00:00 GMT+1 type: 4, transition time in file:386125200 Add previous offset to get transition as (localtime): March 28, 1982 02:00:00 GMT+2 type: 5, transition time in file:401850000 Add previous offset to get transition as (localtime): September 26, 1982 03:00:00 GMT+1 type: 4, transition time in file:417574800 Add previous offset to get transition as (localtime): March 27, 1983 02:00:00 GMT+2 type: 5, transition time in file:433299600 Add previous offset to get transition as (localtime): September 25, 1983 03:00:00 GMT+1 type: 4, transition time in file:449024400 Add previous offset to get transition as (localtime): March 25, 1984 02:00:00 GMT+2 type: 5, transition time in file:465354000 Add previous offset to get transition as (localtime): September 30, 1984 03:00:00 GMT+1 type: 4, transition time in file:481078800 Add previous offset to get transition as (localtime): March 31, 1985 02:00:00 GMT+2 type: 5, transition time in file:496803600 Add previous offset to get transition as (localtime): September 29, 1985 03:00:00 GMT+1 type: 4, transition time in file:512528400 Add previous offset to get transition as (localtime): March 30, 1986 02:00:00 GMT+2 type: 5, transition time in file:528253200 Add previous offset to get transition as (localtime): September 28, 1986 03:00:00 GMT+1 type: 4, transition time in file:543978000 Add previous offset to get transition as (localtime): March 29, 1987 02:00:00 GMT+2 type: 5, transition time in file:559702800 Add previous offset to get transition as (localtime): September 27, 1987 03:00:00 GMT+1 type: 4, transition time in file:575427600 Add previous offset to get transition as (localtime): March 27, 1988 02:00:00 GMT+2 type: 5, transition time in file:591152400 Add previous offset to get transition as (localtime): September 25, 1988 03:00:00 GMT+1 type: 4, transition time in file:606877200 Add previous offset to get transition as (localtime): March 26, 1989 02:00:00 GMT+2 type: 5, transition time in file:622602000 Add previous offset to get transition as (localtime): September 24, 1989 03:00:00 GMT+1 type: 4, transition time in file:638326800 Add previous offset to get transition as (localtime): March 25, 1990 02:00:00 GMT+2 type: 5, transition time in file:654656400 Add previous offset to get transition as (localtime): September 30, 1990 03:00:00 GMT+1 type: 4, transition time in file:670381200 Add previous offset to get transition as (localtime): March 31, 1991 02:00:00 GMT+2 type: 5, transition time in file:686106000 Add previous offset to get transition as (localtime): September 29, 1991 03:00:00 GMT+1 type: 4, transition time in file:701830800 Add previous offset to get transition as (localtime): March 29, 1992 02:00:00 GMT+2 type: 5, transition time in file:717555600 Add previous offset to get transition as (localtime): September 27, 1992 03:00:00 GMT+1 type: 4, transition time in file:733280400 Add previous offset to get transition as (localtime): March 28, 1993 02:00:00 GMT+2 type: 5, transition time in file:749005200 Add previous offset to get transition as (localtime): September 26, 1993 03:00:00 GMT+1 type: 4, transition time in file:764730000 Add previous offset to get transition as (localtime): March 27, 1994 02:00:00 GMT+2 type: 5, transition time in file:780454800 Add previous offset to get transition as (localtime): September 25, 1994 03:00:00 GMT+1 type: 4, transition time in file:796179600 Add previous offset to get transition as (localtime): March 26, 1995 02:00:00 GMT+2 type: 5, transition time in file:811904400 Add previous offset to get transition as (localtime): September 24, 1995 03:00:00 GMT+1 type: 4, transition time in file:828234000 Add previous offset to get transition as (localtime): March 31, 1996 02:00:00 GMT+2 type: 5, transition time in file:846378000 Add previous offset to get transition as (localtime): October 27, 1996 03:00:00 GMT+1 type: 4, transition time in file:859683600 Add previous offset to get transition as (localtime): March 30, 1997 02:00:00 GMT+2 type: 5, transition time in file:877827600 Add previous offset to get transition as (localtime): October 26, 1997 03:00:00 GMT+1 type: 4, transition time in file:891133200 Add previous offset to get transition as (localtime): March 29, 1998 02:00:00 GMT+2 type: 5, transition time in file:909277200 Add previous offset to get transition as (localtime): October 25, 1998 03:00:00 GMT+1 type: 4, transition time in file:922582800 Add previous offset to get transition as (localtime): March 28, 1999 02:00:00 GMT+2 type: 5, transition time in file:941331600 Add previous offset to get transition as (localtime): October 31, 1999 03:00:00 GMT+1 type: 4, transition time in file:954032400 Add previous offset to get transition as (localtime): March 26, 2000 02:00:00 GMT+2 type: 5, transition time in file:972781200 Add previous offset to get transition as (localtime): October 29, 2000 03:00:00 GMT+1 type: 4, transition time in file:985482000 Add previous offset to get transition as (localtime): March 25, 2001 02:00:00 GMT+2 type: 5, transition time in file:1004230800 Add previous offset to get transition as (localtime): October 28, 2001 03:00:00 GMT+1 type: 4, transition time in file:1017536400 Add previous offset to get transition as (localtime): March 31, 2002 02:00:00 GMT+2 type: 5, transition time in file:1035680400 Add previous offset to get transition as (localtime): October 27, 2002 03:00:00 GMT+1 type: 4, transition time in file:1048986000 Add previous offset to get transition as (localtime): March 30, 2003 02:00:00 GMT+2 type: 5, transition time in file:1067130000 Add previous offset to get transition as (localtime): October 26, 2003 03:00:00 GMT+1 type: 4, transition time in file:1080435600 Add previous offset to get transition as (localtime): March 28, 2004 02:00:00 GMT+2 type: 5, transition time in file:1099184400 Add previous offset to get transition as (localtime): October 31, 2004 03:00:00 GMT+1 type: 4, transition time in file:1111885200 Add previous offset to get transition as (localtime): March 27, 2005 02:00:00 GMT+2 type: 5, transition time in file:1130634000 Add previous offset to get transition as (localtime): October 30, 2005 03:00:00 GMT+1 type: 4, transition time in file:1143334800 Add previous offset to get transition as (localtime): March 26, 2006 02:00:00 GMT+2 type: 5, transition time in file:1162083600 Add previous offset to get transition as (localtime): October 29, 2006 03:00:00 GMT+1 type: 4, transition time in file:1174784400 Add previous offset to get transition as (localtime): March 25, 2007 02:00:00 GMT+2 type: 5, transition time in file:1193533200 Add previous offset to get transition as (localtime): October 28, 2007 03:00:00 GMT+1 type: 4, transition time in file:1206838800 Add previous offset to get transition as (localtime): March 30, 2008 02:00:00 GMT+2 type: 5, transition time in file:1224982800 Add previous offset to get transition as (localtime): October 26, 2008 03:00:00 GMT+1 type: 4, transition time in file:1238288400 Add previous offset to get transition as (localtime): March 29, 2009 02:00:00 GMT+2 type: 5, transition time in file:1256432400 Add previous offset to get transition as (localtime): October 25, 2009 03:00:00 GMT+1 type: 4, transition time in file:1269738000 Add previous offset to get transition as (localtime): March 28, 2010 02:00:00 GMT+2 type: 5, transition time in file:1288486800 Add previous offset to get transition as (localtime): October 31, 2010 03:00:00 GMT+1 type: 4, transition time in file:1301187600 Add previous offset to get transition as (localtime): March 27, 2011 02:00:00 GMT+2 type: 5, transition time in file:1319936400 Add previous offset to get transition as (localtime): October 30, 2011 03:00:00 GMT+1 type: 4, transition time in file:1332637200 Add previous offset to get transition as (localtime): March 25, 2012 02:00:00 GMT+2 type: 5, transition time in file:1351386000 Add previous offset to get transition as (localtime): October 28, 2012 03:00:00 GMT+1 type: 4, transition time in file:1364691600 Add previous offset to get transition as (localtime): March 31, 2013 02:00:00 GMT+2 type: 5, transition time in file:1382835600 Add previous offset to get transition as (localtime): October 27, 2013 03:00:00 GMT+1 type: 4, transition time in file:1396141200 Add previous offset to get transition as (localtime): March 30, 2014 02:00:00 GMT+2 type: 5, transition time in file:1414285200 Add previous offset to get transition as (localtime): October 26, 2014 03:00:00 GMT+1 type: 4, transition time in file:1427590800 Add previous offset to get transition as (localtime): March 29, 2015 02:00:00 GMT+2 type: 5, transition time in file:1445734800 Add previous offset to get transition as (localtime): October 25, 2015 03:00:00 GMT+1 type: 4, transition time in file:1459040400 Add previous offset to get transition as (localtime): March 27, 2016 02:00:00 GMT+2 type: 5, transition time in file:1477789200 Add previous offset to get transition as (localtime): October 30, 2016 03:00:00 GMT+1 type: 4, transition time in file:1490490000 Add previous offset to get transition as (localtime): March 26, 2017 02:00:00 GMT+2 type: 5, transition time in file:1509238800 Add previous offset to get transition as (localtime): October 29, 2017 03:00:00 GMT+1 type: 4, transition time in file:1521939600 Add previous offset to get transition as (localtime): March 25, 2018 02:00:00 GMT+2 type: 5, transition time in file:1540688400 Add previous offset to get transition as (localtime): October 28, 2018 03:00:00 GMT+1 type: 4, transition time in file:1553994000 Add previous offset to get transition as (localtime): March 31, 2019 02:00:00 GMT+2 type: 5, transition time in file:1572138000 Add previous offset to get transition as (localtime): October 27, 2019 03:00:00 GMT+1 type: 4, transition time in file:1585443600 Add previous offset to get transition as (localtime): March 29, 2020 02:00:00 GMT+2 type: 5, transition time in file:1603587600 Add previous offset to get transition as (localtime): October 25, 2020 03:00:00 GMT+1 type: 4, transition time in file:1616893200 Add previous offset to get transition as (localtime): March 28, 2021 02:00:00 GMT+2 type: 5, transition time in file:1635642000 Add previous offset to get transition as (localtime): October 31, 2021 03:00:00 GMT+1 type: 4, transition time in file:1648342800 Add previous offset to get transition as (localtime): March 27, 2022 02:00:00 GMT+2 type: 5, transition time in file:1667091600 Add previous offset to get transition as (localtime): October 30, 2022 03:00:00 GMT+1 type: 4, transition time in file:1679792400 Add previous offset to get transition as (localtime): March 26, 2023 02:00:00 GMT+2 type: 5, transition time in file:1698541200 Add previous offset to get transition as (localtime): October 29, 2023 03:00:00 GMT+1 type: 4, transition time in file:1711846800 Add previous offset to get transition as (localtime): March 31, 2024 02:00:00 GMT+2 type: 5, transition time in file:1729990800 Add previous offset to get transition as (localtime): October 27, 2024 03:00:00 GMT+1 type: 4, transition time in file:1743296400 Add previous offset to get transition as (localtime): March 30, 2025 02:00:00 GMT+2 type: 5, transition time in file:1761440400 Add previous offset to get transition as (localtime): October 26, 2025 03:00:00 GMT+1 type: 4, transition time in file:1774746000 Add previous offset to get transition as (localtime): March 29, 2026 02:00:00 GMT+2 type: 5, transition time in file:1792890000 Add previous offset to get transition as (localtime): October 25, 2026 03:00:00 GMT+1 type: 4, transition time in file:1806195600 Add previous offset to get transition as (localtime): March 28, 2027 02:00:00 GMT+2 type: 5, transition time in file:1824944400 Add previous offset to get transition as (localtime): October 31, 2027 03:00:00 GMT+1 type: 4, transition time in file:1837645200 Add previous offset to get transition as (localtime): March 26, 2028 02:00:00 GMT+2 type: 5, transition time in file:1856394000 Add previous offset to get transition as (localtime): October 29, 2028 03:00:00 GMT+1 type: 4, transition time in file:1869094800 Add previous offset to get transition as (localtime): March 25, 2029 02:00:00 GMT+2 type: 5, transition time in file:1887843600 Add previous offset to get transition as (localtime): October 28, 2029 03:00:00 GMT+1 type: 4, transition time in file:1901149200 Add previous offset to get transition as (localtime): March 31, 2030 02:00:00 GMT+2 type: 5, transition time in file:1919293200 Add previous offset to get transition as (localtime): October 27, 2030 03:00:00 GMT+1 type: 4, transition time in file:1932598800 Add previous offset to get transition as (localtime): March 30, 2031 02:00:00 GMT+2 type: 5, transition time in file:1950742800 Add previous offset to get transition as (localtime): October 26, 2031 03:00:00 GMT+1 type: 4, transition time in file:1964048400 Add previous offset to get transition as (localtime): March 28, 2032 02:00:00 GMT+2 type: 5, transition time in file:1982797200 Add previous offset to get transition as (localtime): October 31, 2032 03:00:00 GMT+1 type: 4, transition time in file:1995498000 Add previous offset to get transition as (localtime): March 27, 2033 02:00:00 GMT+2 type: 5, transition time in file:2014246800 Add previous offset to get transition as (localtime): October 30, 2033 03:00:00 GMT+1 type: 4, transition time in file:2026947600 Add previous offset to get transition as (localtime): March 26, 2034 02:00:00 GMT+2 type: 5, transition time in file:2045696400 Add previous offset to get transition as (localtime): October 29, 2034 03:00:00 GMT+1 type: 4, transition time in file:2058397200 Add previous offset to get transition as (localtime): March 25, 2035 02:00:00 GMT+2 type: 5, transition time in file:2077146000 Add previous offset to get transition as (localtime): October 28, 2035 03:00:00 GMT+1 type: 4, transition time in file:2090451600 Add previous offset to get transition as (localtime): March 30, 2036 02:00:00 GMT+2 type: 5, transition time in file:2108595600 Add previous offset to get transition as (localtime): October 26, 2036 03:00:00 GMT+1 type: 4, transition time in file:2121901200 Add previous offset to get transition as (localtime): March 29, 2037 02:00:00 GMT+2 type: 5, transition time in file:2140045200 Add previous offset to get transition as (localtime): October 25, 2037 03:00:00 GMT+1 

My second and fourth transition is an hour later than those listed here , but almost everything else looks as if it matches.

+7
source share
2 answers

"Standard time" refers to "winter time", as opposed to "daylight saving time" or "daylight saving time". Yes, GMT (free, strict, UTC) is the “standard for time”, but it’s not exactly the same as the “isstd” column in your data.

The point about 'isstd', equal to 0 or 1, is that the transition times in Europe (usually) are indicated at 02:00 in the current time zone.

So the clock for Europe / Rome went:

 1982-03-28 01:59:59 (UTC+01:00) 1982-03-28 03:00:00 (UTC+02:00) 

This transition was recorded at 02:00 standard time (so isstd = 1 ), but it was not UTC (GMT) time; therefore, it was a type 0 transition to your list. And vice versa, in the autumn the clock went:

 1982-09-26 01:59:59 (UTC+02:00) 1982-09-26 01:00:00 (UTC+01:00) 

The transition was registered at 02:00 in the time zone that existed before the switch, therefore isstd = 0 (but this is not UTC (GMT) time); therefore, it was a type 3 transition to your list.

Other combinations (types 1, 2, 4, 5) appear in other circumstances. For the same two transitions, you must use a record of type 4 and record the change time as 01:00 UTC (because 01: 00: 00 + 00: 00 is the same as 02: 00: 00 + 01: 00; you must use a record of type 5 and document the change time as 00:00 UTC (because 00: 00: 00 + 00: 00 is the same as 02: 00: 00 + 02: 00). Please note that the switching times are different here. in the description refer to types 1 and 2.

+3
source

I was about to edit my original post, but it says it's too long:

Update:

I think my details are correct, and TimeAndDate.com has a minor error.

For my tests, I focused on the first two transitions for Rome.

My details:

type: 0, transition time to File: -1690851600

Add previous offset to get local transition time: June 03, 1916 00:00:00 Time zone GMT + 2

type: 1, transition time to File: -1680483600

Add previous offset to get local transition time: October 01, 1916 01:00:00 New time zone GMT + 1

TimeAndDate shows:

1.) Saturday, June 3, 1916 11:59:59 PM

Sunday, June 4, 1916 12:00:00 Midnight → 1:00:00 AM + 1h UTC + 2h CEST DST begins

2.) Saturday, September 30, 1916 11:59:59 PM

12:00:00 Midnight → 11:00:00 PM No UTC + 1h CET DST Ends

I set the computer time zone and local time to match Rome. Then I executed the following code:

 time_t rome_ts; struct tm * rome_info; char rome_buffer[75]; printf("My first transition:\n"); rome_ts = -1690851601; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1690851600; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1690851599; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n\n\n"); printf("TimeandDate.com first transition:\n"); rome_ts = -1690768801; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1690768800; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1690768799; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n\n\n"); printf("My second transition:\n"); rome_ts = -1680483601; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1680483600; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n"); rome_ts = -1680483599; rome_info = localtime(&rome_ts); printf("Timestamp: %ld\n",rome_ts); strftime(rome_buffer,75,"%A %B %d, %Y %H:%M:%S %Z",rome_info); printf("%s, dst? = %d\n",rome_buffer,rome_info->tm_isdst); printf("\n\n\n"); 

, localtime() :

: :

-1690851601 02 1916 23:59:59 CET, dst? = 0

: -1690851600 03, 1916 01:00:00 CEST, dst? = 1

: -1690851599 03, 1916 01:00:01 CEST, dst? = 1

TimeandDate.com:

: -1690768801 03, 1916 23:59:59 CEST, dst? = 1

: -1690768800 , 04 , 1916 00:00:00 CEST, dst? = 1

: -1690768799 , 04 , 1916 00:00:01 CEST, dst? = 1

: :

-1680483601 01 1916 00:59:59 CEST, dst? = 1

: -1680483600 01, 1916 00:00:00 CET, dst? = 0

: -1680483599 01, 1916 00:00:01 CET, dst? = 0

0
source

All Articles