Часовые пояса, смещения и даты начала и окончания летнего времени (и само летнее время вообще существует) менялись с годами; и различия во всем мире составляют довольно сложную сетку зон и смещений UTC для разных мест.
Да, в самом деле. История часовых поясов на Земле - чрезвычайно сложная тема, поскольку каждый часовой пояс определяется отдельным государственным органом. Хотя почти все теперь согласны использовать Всемирное координированное время (UTC) в качестве основы для хронометража, нет такого стандартного соглашения, когда речь идет о местном времени. Таким образом, «часовые пояса» состоят из:
- Стандартное смещение от UTC
- Потенциально другое смещение от UTC, которое применяется в другое время года, обычно называемое «летним временем» или «летним временем».
- Расписание, в котором указаны точные даты и время перехода со стандартного времени на летнее и зимнее время.
- Города или географические границы, к которым относятся часовые пояса.
- Изменения любого из вышеперечисленного в любой момент времени
- История того, как эти правила менялись в прошлом
- Некоторые обоснованные предположения о том, как эти правила могут остаться или измениться в течение некоторого периода в будущем.
На этот предметный домен распространяется "база данных TZ", также известная как база данных часовых поясов IANA. , база данных часовых поясов Олсона, zoneinfo, tzdata, tzdb и несколько других имен. Он открыто поддерживается сообществом через IANA под управлением управление BDFL, описанное в IETF BCP 175/RFC 6557. Он широко реализован на многих различных платформах и языках программирования.
Делает ли PHP что-нибудь, чтобы вычислить это для исторических дат?
PHP реализует базу данных TZ через пакет PECL "timezonedb". Каждая версия PHP распространяется с уже включенной последней версией timezonedb. Его также можно обновить независимо, но часто проще просто обновиться до последней версии PHP.
Вы можете прочитать все об этом в документации PHP Date and Time.
Если я укажу дату в 1928 году для определенного часового пояса, рассчитает ли PHP правила смещения для этого места в эту дату в 1928 году?
Это зависит от того, о каком часовом поясе вы спрашиваете. В целом, ДА. Однако база данных TZ гарантирует данные только с 1970 года. Однако во многих часовых поясах доступны данные о предыдущих часовых поясах, если они известны.
Политика TZDB в этом отношении заключается в том, что они создают записи часовых поясов только для тех зон, где часы имеют уникальные правила после 1970 года, даже если они отличались до этого. Для зон, которые соответствуют этому критерию, они дополняются информацией по мере ее появления. В списке рассылки TZ часто обсуждаются исторические сведения о часовых поясах. предоставляется разумный источник, затем часто он корректируется в базе данных TZ.
Например, в зоне TZDB "America/Chicago"
есть данные с 1883 года. Однако он также охватывает весь центральный часовой пояс США, от которого до 1970 года были отклонения для других городов, которые не включены в TZDB.
В качестве контрпримера можно привести зону TZDB "Asia/Thimphu"
, представляющую Бутан. данные часового пояса с 1947 года. Если вы запросите дату в 1928 году, будет использоваться местное среднее время (LMT ) вместо этого. Некоторых это может сбить с толку, поскольку LMT рассчитывается на основе широты и долготы, а не определяется правительством. В этом случае Asia/Thimphu
имеет смещение LMT UTC+05:56:36, тогда как после 1947 года было известно, что оно имеет смещение UTC+05:30, до 1987 года, когда оно стало UTC+06:00.
person
Matt Johnson-Pint
schedule
04.09.2019