我正在读取从Olson数据库生成的时区文件,以查找时区何时更改以及更改的内容.时区文件的格式如下所述tzfile.h.
对于我的问题,我将使用我在欧洲/罗马获得的数据.
我可能正常工作,因为我的输出正确匹配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个"时间类型":
Run Code Online (Sandbox Code Playgroud)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? …