1### 2022a rev. 2
2
3TZDB 2022b introduces `Europe/Kyiv` and merges more time zones which were
4alike since 1970. These changes require ICU patches.
5
6Though the reason why 2022b was released are changes in Chile. As they have
7to be delivered by the 3rd of September and ICU patches are not ready,
8decision was made to prepare smaller release which does not need ICU patches.
9
10tzdata archieve is prepared manually by applying Iran and Chile changes on
11top of 2022a tag.
12
13
14### 2022a
15
16This update includes pre-1970
17[changes](https://github.com/eggert/tz/commit/1edbb16e933a6ba6dceefd2bd7057b5ce00dd13c)
18which were reverted manually in Android and resulted in Android releasing
19updates we called `2021a rev 2` and `2021a rev 3` instead of tracking TZDB's
20`2021b` and `2021c` releases. Android has made changes to reduce the impact of
21these changes. This might have app compat issues as some methods in Android's
22ICU4J APIs such as `TimeZone.getCanonicalID(id)` will return different time
23zone IDs than before. After this release, the canonical zone IDs returned will
24be different for some input IDs, and will more often be associated with
25different regions.
26
27`Africa/Casablanca` is a time zone modelled by the TZDB using a negative DST
28saving to represent the period of Ramadan. Several of Android's embedded time
29libraries do not support negative DST savings, so we use TZDB's rearguard
30format, which flips standard and daylight saving time definitions for affected
31zones. Also, `Africa/Casablanca` transitions follow lunar calendar, which
32is not supported by TZif format so transitions are pre-generated (as of now up
33to year 2087). As they are pre-generated, the last transition is used for dates
34after 2087. Before `2022a`, in rearguard format that last transition was from
35standard to daylight saving time. Having DST throughout the year might break
36assumptions in software, so as of `2022a` the  last transition is marked as
37standard time, even though its offset differs from standard time offset used in
38prior transitions.
39
40A standard-to-standard time transition breaks DST saving logic in
41Android's `java.util.TimeZone.getDSTSavings()` - it returns 0 instead of 1 hour.
42`input_data/iana/tzdb2022a.tar.gz` has [commit](https://github.com/eggert/tz/commit/cec7d9e2e83f8a3faa2367e0d45383a1557889ed)
43reverted to bring back the old TZif file. There is no fix yet, it will be like
44that indefinitely.
45
46The main reason for the TZDB `2022a` release is a change to the DST transition
47for Palestine on 27 Mar 2022. In addition to this year's change, future
48predictions have also been [adjusted](https://github.com/eggert/tz/commit/59467e3373a2f90aae3a3c9684ab527855922427)
49so the DST transitions for future years are also affected.
50
51
52### 2021 rev. 3
53
54Like 2021 rev.2 this release is also different from regular updates. It is
55closely correlated with IANA's `2021d` and `2021e`. See below for more details.
56
57TZDB version `2021c` reverted most (but not all) time zone merges from `2021b`.
58As Android has not applied any of them and there were no other rules update,
59it is a no-op for Android.
60
61Then TZDB version `2021d` was released with Fiji changes. That corresponds to
62ICU's `2021a2`. But `2021a2` also picked up a
63`"Link America/Panama America/Coral_Harbour"` change from IANA's TZDB release
64in the backward file.
65
66ICU's `2021a3` is `2021a2` with Palestine changes. No extra change there.
67
68`tzdata2021a.tar.gz` in this Android TZDB update is ICU's [`tzdata2021a3.tar.gz`](https://github.com/unicode-org/icu-data/blob/d90a4eed92e3c5221c4dc1977bfdb7c072a8bb3d/tzdata/tzdata_patch/tzdata2021a3.tar.gz)
69with `Link` change mention above reverted. Not reverting it will put
70`America/Coral_Harbour` under Panama in `tzlookup.xml`. Right approach here
71is to update tooling, but that will take some time.
72
73
74### 2021a rev. 2
75
76In `2021b` several time zones which were alike since 1970 were merged. It
77received backlash in tz mailing-list. Please check
78[September archive](https://mm.icann.org/pipermail/tz/2021-September/thread.html)
79for discussions around the merges.
80
81This contains a subset of the updates from IANA's 2021b update, but not all
82because they cause problems for various libraries and OSes, Android included.
83New links cause problems for the tzlookup.xml generation process, which have
84yet to be resolved. Android API behavior is influenced by ICU, so while ICU
85are forked and until things become clearer, so is Android.
86
87ICU decided to skip zone merge changes and named their release `2021a1`.
88Unfortunately there are hardcoded places in Android which expect tzdb version
89to be exactly 5 characters and we release it as `2021a rev. 2`.
90
91`input_data/iana/tzdata2021a.tar.gz` is renamed ICU's `2021a1.tar.gz`. As it
92is not signed, `tzdata2021a.tar.gz.asc` was deleted for this release only.
93
94`2021a1` contains the following changes applied on top of `2021a`:
95```
96# Portugal observed DST in 1950
97https://github.com/eggert/tz/commit/ed2f9d6b01d1256a4d463d2ceb953e15e1673d72
98# Fix Guyana LMT and later historical transitions
99https://github.com/eggert/tz/commit/0252f09cdff3769ecbf6adfdaf6c47055bbfb74b
100# Add Barbados DST 1942-1944, fix end of LMT
101https://github.com/eggert/tz/commit/42efb563b8224a20c1a6480b38427e5b4634da36
102# Backzone fixes for Gambia, Malawi, Sierra Leone
103https://github.com/eggert/tz/commit/bdb47c5fd68996c04a69d6b23c4c4a5a81df5c95
104# Sierra Leone did not use DST 1957-1962
105https://github.com/eggert/tz/commit/6982e34ab92cf13f3f3fb20212aca8aa2e4f0aae
106# Tonga moved from +12:20 to +13 in 1961, not 1941
107https://github.com/eggert/tz/commit/666022ef2a65bb9872ffa6d98cb73236c5f6daa0
108# Tonga switched to standard time in 1945, not 1901
109https://github.com/eggert/tz/commit/03cc98977ea7c93c49ecb58eae07cd01e9034bfd
110# Cook Islands had two Christmases in 1899
111https://github.com/eggert/tz/commit/bf12c3ba8513b640b83c245f804c37feeccb862b
112# More pre-1978 fixes for Cook and Niue
113https://github.com/eggert/tz/commit/a10451bb3fa7f84181f29ac81b06008fd1d81249
114# Fix north Vietnam lat+long
115https://github.com/eggert/tz/commit/6860c875400b70be52c71d7b7b9642b8667a8112
116# Niue left -11:20 in 1964, not 1978
117https://github.com/eggert/tz/commit/b73f9fd0364e1795b40cd325661ce609d6126377
118# Samoa no longer observes DST
119https://github.com/eggert/tz/commit/29583c461a9705118560e02e69bb64a0bf2fce0c
120# Jordan now starts DST on February’s last Thursday.
121https://github.com/eggert/tz/commit/39df8c8b22605f59f71213cfb92b3fd321e31d3c
122```
123
124These changes are in chronological order -- from old to new, so apply them
125accordingly.
126
127"Replace Pacific/Enderbury with Pacific/Kanton" change was skipped as it
128requires changes in CLDR and `tzdb2021b` was announced late in CLDR's release
129cycle.
130
131Code changes were skipped as Android uses fixed version of tzcode, not ToT.
132
133