如何使用IANA (Internet Assigned Numbers Authority)数据文件估计当地时间?
在这个网站上,我发现以下数据:https://www.timeanddate.com/time/zone/uk/london
2015 Sun, 29 Mar, 01:00GMT → BST+1 hour (DST start)UTC+1h
Sun, 25 Oct, 02:00BST → GMT-1 hour (DST end)UTC
2016 Sun, 27 Mar, 01:00GMT → BST+1 hour (DST start)UTC+1h
Sun, 30 Oct, 02:00BST → GMT-1 hour (DST end)UTC
2017 Sun, 26 Mar, 01:00GMT → BST+1 hour (DST start)UTC+1h
Sun, 29 Oct, 02:00BST → GMT-1 hour (DST end)UTC
2018 Sun, 25 Mar, 01:00GMT → BST+1 hour (DST start)UTC+1h
Sun, 28 Oct, 02:00BST → GMT-1 hour (DST end)UTC
2019 Sun, 31 Mar, 01:00GMT → BST+1 hour (DST start)UTC+1h
Sun, 27 Oct, 02:00BST → GMT-1 hour (DST end)UTC
正如你所看到的,欧洲/伦敦的时间变化规则每年都不同:2018年的规则从3月25日起适用,2019年从3月31日起适用,等等。
但是我在IANA数据分布中找不到这些信息。https://www.iana.org/time-zones
From tzdata2016h.tar.gz,解压文件europe
:
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
0:00 GB-Eire %s 1968 Oct 27
1:00 - BST 1971 Oct 31 2:00u
0:00 GB-Eire %s 1996
0:00 EU GMT/BST
也许我不明白如何使用IANA数据?如何提取IANA数据文件?
首先查看Europe/London
的Zone
条目:
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
0:00 GB-Eire %s 1968 Oct 27
1:00 - BST 1971 Oct 31 2:00u
0:00 GB-Eire %s 1996
0:00 EU GMT/BST
每行以[UNTIL]
日期结束,最后一行除外。当没有[UNTIL]
日期时,意味着无限遥远的未来。因此,伦敦目前由上表中的最后一行管理,该行表示UTC偏移量为0:00,夏令时规则由Rule EU
管理,使用的缩写是GMT
表示"标准"时间,BST
表示夏令时。
现在去找Rule EU
:
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
Rule EU 1977 only - Sep lastSun 1:00u 0 -
Rule EU 1978 only - Oct 1 1:00u 0 -
Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
Rule EU 1996 max - Oct lastSun 1:00u 0 -
您正在寻找当前有效的规则。现在有两行,最后两行
倒数第二行表示从1981年开始的每一年,在3月的最后一个星期日01:00 UTC, 1:00被添加到UTC偏移量(由Zone
指定)。本例中不使用包含S
的最后一列。但是,如果Zone
中指定的缩写包含%s
,则该字母将被替换为%s
。
最后一行表示每年,从1996年开始,在10月的最后一个星期日01:00 UTC, 0:00被添加到UTC偏移量(由Zone
指定)。
Matt Johnson在下面的评论中补充道:
您也可能对iana.org/time-zones/repository/tz-how-to.html
感兴趣
我认为这是一个如此重要的评论,它应该出现在更高可见性的答案中。感谢马特!