时区数据库文件格式问题

问题描述

| 我正在从Olson数据库生成的时区文件中进行读取,以查找时区何时更改以及更改为什么。时区文件的格式在ѭ0中描述。 对于我的问题,我将使用从欧洲/罗马获得的数据。 我的输出可能与timeanddate.com所说的正确匹配,所以我可能使其正常工作。例如,我的程序正确地说:   1982年3月28日02:00:00时区更改为GMT +2.000000。      1982年9月26日03:00:00时区更改为GMT +1.000000。 在此确认: http://www.timeanddate.com/worldclock/clockchange.html?n=215&year=1982 但是,我不确定是否需要使用tzh_ttisstdcnt和tzh_ttisgmtcnt。 从tzfile.h:   然后有tzh_ttisstdcnt   标准/墙壁指示器,每个都存储   作为一个字节的值;他们告诉是否   相关的过渡时间   指定了本地时间类型   作为标准时间或挂钟时间,   当时区文件为   用于处理POSIX风格的时区   环境变量。      最后是tzh_ttisgmtcnt   UTC /本地指标,每个指标存储为   一字节值;他们告诉是否   相关的过渡时间   与当地时间类型分别为   指定为UTC或当地时间,并且   使用时区文件时使用   在处理POSIX样式的时区   环境变量。 我发现每个\“ time-type \”(ttinfo结构)都有一个isstd和isgmt字节。 这些是欧洲/罗马的6种“时间类型”:
 Type 0,CEST,DST? = 1,GMT+2,isstd? = 1,isgmt? = 0
 Type 1,CET,DST? = 0,GMT+1,isgmt? = 0
 Type 2,isstd? = 0,isgmt? = 0
 Type 3,isgmt? = 0
 Type 4,isgmt? = 1
 Type 5,isgmt? = 1
tzfile.h
听起来像isstd和isgmt告诉您如何存储过渡时间(gmt vs localtime)。但是,我的代码当前假设所有转换时间都存储为GMT。对于所有6种过渡类型,我程序的输出都与timeanddate.com相匹配。 另外,我不明白如何0和1类型可以是std而不是gmt。我认为格林尼治标准时间是标准时间。 任何解释都很好。 编辑: 当我忽略isstd和isgmt选项时,我的输出似乎与timeanddate.com上的数据几乎匹配。我目前将所有过渡时间都解释为GMT: 罗马的转换类型:   新类型0:       isdst = 1       偏移量= 7200       缩写= 0       isstd = 1       isgmt = 0      新类型1:       isdst = 0       偏移量= 3600       缩写= 5       isstd = 1       isgmt = 0      新类型2:       isdst = 1       偏移量= 7200       缩写= 0       isstd = 0       isgmt = 0      新类型3:       isdst = 0       偏移量= 3600       缩写= 5       isstd = 0       isgmt = 0      新类型4:       isdst = 1       偏移量= 7200       缩写= 0       isstd = 1       isgmt = 1 罗马的数据(假设所有过渡时间均以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
我的第二次和第四次转换比此处列出的转换晚了一个小时,但是几乎所有其他一切看起来都匹配。     

解决方法

        “标准时间”是指“冬季时间”,而不是“夏季时间”或“夏时制”。是的,GMT(宽松地;严格地说,是UTC)是“时间的标准”,但与数据中“ isstd”列所指的内容并不完全相同。 关于'isstd \'为0或1的要点是,欧洲的过渡时间(通常)被指定为在当前时区的02:00发生。 因此,欧洲/罗马的时钟流逝了:
1982-03-28 01:59:59 (UTC+01:00)
1982-03-28 03:00:00 (UTC+02:00)
据记录,这种转变发生在标准时间02:00(因此
isstd = 1
),但这不是UTC(GMT)时间。因此,这是您列表中的Type 0转换。相反,在秋天,钟表走了:
1982-09-26 01:59:59 (UTC+02:00)
1982-09-26 01:00:00 (UTC+01:00)
转换被记录为发生在切换之前的主要时区的02:00,因此为“ 7”(但这不是UTC(GMT)时间);因此,这是您列表中的第3类转换。 其他组合(类型1、2、4、5)出现在其他情况下。对于相同的两个转换,您将使用类型4条目并将更改时间记录为01:00 UTC(因为01:00:00 + 00:00与02:00:00 + 01:00相同;并且您将使用5类条目并将更改时间记录为00:00 UTC(因为00:00:00 + 00:00与02:00:00 + 02:00相同)。请注意,该开关此处的时间互不相同,说明中的类似差异适用于类型1和类型2。     ,我本来要编辑我的原始帖子,但是它说太长了: 更新: 我认为我的数据正确,并且TimeAndDate.com有一个小错误。 在测试中,我重点介绍了罗马的前两个转换。 我的数据是:   类型:0,过渡时间   文件:-1690851600      添加上一个偏移   获取本地过渡时间:6月3日,   1916 00:00:00新时区为GMT + 2      类型:1,过渡时间   文件:-1680483600      添加上一个偏移   获取本地过渡时间:十月   19,01 16 01:00:00新时区是   格林尼治标准时间+1 TimeAndDate \的数据显示:   1.)1916年6月3日星期六晚上11:59:59      1916年6月4日,星期日,12:00:00午夜   →1:00:00 AM + 1h UTC + 2h CEST DST   开始      2.)1916年9月30日星期六11:59:59   下午      12:00:00午夜→11:00:00   PM No UTC + 1h CET DST结束 我将计算机的时区和本地时间设置为与罗马匹配。 然后,我运行了以下代码:
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_info->tm_isdst);
printf(\"\\n\");

rome_ts = -1690851599;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",rome_info->tm_isdst);
printf(\"\\n\\n\\n\");


printf(\"TimeandDate.com\'s first transition:\\n\");

rome_ts = -1690768801;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",rome_info->tm_isdst);
printf(\"\\n\");

rome_ts = -1690768800;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",rome_info->tm_isdst);
printf(\"\\n\");

rome_ts = -1690768799;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",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_info->tm_isdst);
printf(\"\\n\");

rome_ts = -1680483600;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",rome_info->tm_isdst);
printf(\"\\n\");

rome_ts = -1680483599;
rome_info = localtime(&rome_ts);
printf(\"Timestamp: %ld\\n\",rome_info->tm_isdst);
printf(\"\\n\\n\\n\");
输出显示localtime()与我的过渡时间一致:   我的第一个过渡:时间戳记:      -1690851601 1916年6月2日,星期五,欧洲中部标准时间(DST)? = 0      时间戳记:-1690851600 6月星期六   19年3月3日,CEST,dst? = 1      时间戳:-1690851599,六月周六   19年3月3日01:00:01 CEST,dst? = 1      TimeandDate.com的第一个过渡:      时间戳:-1690768801六月六月   美国东部标准时间(CEST)19年3月19日23:59:59? = 1      时间戳记:-1690768800,6月4日,星期日,   1916 00:00:00 CEST,dst? = 1      时间戳:-1690768799 6月4日星期日,   1916 00:00:01 CEST,dst? = 1      我的第二个过渡:时间戳记:      -1680483601 1916年10月1日(星期日)CEST,dst? = 1      时间戳:-1680483600,十月星期日   欧洲标准时间,1916年1月00:00:00,dst? = 0      时间戳记:-1680483599,十月周日   1916年1月1日00:00:01欧洲中部标准时间(dst)? = 0