Файлы данных IANA (Управление по присвоению номеров в Интернете) и данные с www.timeanddate.com
Как оценить местное время, используя файлы данных 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 года применяется с 25 марта по 2019 года с 31 марта и т. Д.
Но я не могу найти эту информацию о распределении данных IANA. https://www.iana.org/time-zones
Из 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?
1 ответ
Вы сначала посмотрите на Zone
запись для Europe/London
:
# 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 года, в последнее воскресенье марта в 01:00 UTC к смещению UTC добавляется 1:00 (определяется Zone
). Последний столбец, который содержит S
не используется в этом примере. Но если аббревиатура указана в Zone
содержал %s
то эта буква будет заменена на %s
,
В последнем ряду говорится, что для каждого года, начиная с 1996 года, в последнее воскресенье октября в 01:00 UTC к смещению UTC добавляется 0:00 (определяется Zone
).
Matt Johnson добавляет в комментариях ниже:
Вы также можете быть заинтересованы в http://iana.org/time-zones/repository/tz-how-to.html
Я подумал, что это такой важный комментарий, что он должен быть в ответе для большей наглядности. Спасибо, Мэтт!