Africa in the IANA Time Zone Database
Fifty-eight IANA entries cover the continent. Six actual offsets sit underneath. The rest are aliases, historical records, and political artefacts that operating systems need but travellers rarely think about. Here is how the database organises time across 54 countries, why some nations appear four times, and what that means for anyone writing code or scheduling a call.
Complete IANA Zone List (October 2026)
The fact sheet generated 1 October 2026 gives these assignments. Where a country has two IANA zones listed, both appear. Aliases are noted separately below.
| Country | IANA Zone(s) | Offset (Standard) | Abbreviation |
|---|---|---|---|
| Algeria | Africa/Algiers | UTC+1 | CET |
| Angola | Africa/Lagos | UTC+1 | WAT |
| Benin | Africa/Lagos | UTC+1 | WAT |
| Botswana | Africa/Gaborone | UTC+2 | CAT |
| Burkina Faso | Africa/Abidjan | UTC+0 | GMT |
| Burundi | Africa/Bujumbura | UTC+2 | CAT |
| Cabo Verde | Atlantic/Cape_Verde | UTC−1 | , |
| Cameroon | Africa/Douala | UTC+1 | WAT |
| Central African Republic | Africa/Bangui | UTC+1 | WAT |
| Chad | Africa/Ndjamena | UTC+1 | WAT |
| Comoros | Africa/Nairobi | UTC+3 | EAT |
| Democratic Republic of the Congo | Africa/Kinshasa, Africa/Lubumbashi | UTC+1, UTC+2 | WAT, CAT |
| Djibouti | Africa/Djibouti | UTC+3 | EAT |
| Egypt | Africa/Cairo | UTC+3 (summer) | EEST |
| Equatorial Guinea | Africa/Lagos | UTC+1 | WAT |
| Eritrea | Africa/Asmara | UTC+3 | EAT |
| Eswatini | Africa/Johannesburg | UTC+2 | SAST |
| Ethiopia | Africa/Addis_Ababa | UTC+3 | EAT |
| Gabon | Africa/Lagos | UTC+1 | WAT |
| Gambia | Africa/Abidjan | UTC+0 | GMT |
| Ghana | Africa/Abidjan | UTC+0 | GMT |
| Guinea | Africa/Abidjan | UTC+0 | GMT |
| Guinea-Bissau | Africa/Bissau | UTC+0 | GMT |
| Ivory Coast | Africa/Abidjan | UTC+0 | GMT |
| Kenya | Africa/Nairobi | UTC+3 | EAT |
| Lesotho | Africa/Johannesburg | UTC+2 | SAST |
| Liberia | Africa/Monrovia | UTC+0 | GMT |
| Libya | Africa/Tripoli | UTC+2 | EET |
| Madagascar | Africa/Nairobi | UTC+3 | EAT |
| Malawi | Africa/Blantyre | UTC+2 | CAT |
| Mali | Africa/Abidjan | UTC+0 | GMT |
| Mauritania | Africa/Abidjan | UTC+0 | GMT |
| Mauritius | Indian/Mauritius | UTC+4 | , |
| Mayotte | Africa/Nairobi | UTC+3 | EAT |
| Morocco | Africa/Casablanca | UTC+0 (winter) | , |
| Mozambique | Africa/Maputo | UTC+2 | CAT |
| Namibia | Africa/Windhoek | UTC+2 | CAT |
| Niger | Africa/Lagos | UTC+1 | WAT |
| Nigeria | Africa/Lagos | UTC+1 | WAT |
| Republic of the Congo | Africa/Brazzaville | UTC+1 | WAT |
| Reunion | Asia/Dubai | UTC+4 | , |
| Rwanda | Africa/Kigali | UTC+2 | CAT |
| Saint Helena | Africa/Abidjan | UTC+0 | GMT |
| Sao Tome and Principe | Africa/Sao_Tome | UTC+0 | GMT |
| Senegal | Africa/Abidjan | UTC+0 | GMT |
| Seychelles | Asia/Dubai | UTC+4 | , |
| Sierra Leone | Africa/Abidjan | UTC+0 | GMT |
| Somalia | Africa/Mogadishu | UTC+3 | EAT |
| South Africa | Africa/Johannesburg | UTC+2 | SAST |
| South Sudan | Africa/Juba | UTC+2 | CAT |
| Sudan | Africa/Khartoum | UTC+2 | CAT |
| Tanzania | Africa/Dar_es_Salaam | UTC+3 | EAT |
| Togo | Africa/Abidjan | UTC+0 | GMT |
| Tunisia | Africa/Tunis | UTC+1 | CET |
| Uganda | Africa/Kampala | UTC+3 | EAT |
| Western Sahara | Africa/El_Aaiun | UTC+0 (winter) | , |
| Zambia | Africa/Lusaka | UTC+2 | CAT |
| Zimbabwe | Africa/Harare | UTC+2 | CAT |
Aliases: When One Zone Wears Many Names
Several IANA entries are aliases. They point to another zone with identical rules and offset. Africa/Asmara is an alias for Africa/Nairobi. Both sit at UTC+3 with no DST. The same goes for Africa/Dar_es_Salaam, Africa/Kampala, Africa/Djibouti, and Africa/Mogadishu: all resolve to Africa/Nairobi.
The database keeps these names for backward compatibility. If legacy code references Africa/Asmara, it still works. But the canonical entry is Africa/Nairobi. Use the canonical form in new projects unless you are maintaining old systems.
Why DRC Gets Four IANA Entries
The Democratic Republic of the Congo has four IANA zones. Two are aliases. The country uses two offsets: UTC+1 in the west around Kinshasa, UTC+2 in the east around Lubumbashi. The extra entries trace back to pre-independence colonial administrative districts. The zone count per country in the database reflects IANA entries, not actual time diversity on the ground. DRC spans two real offsets, not four.
How a Clock Change Reaches the Database
Governments set time zone policy by decree. No pan-continental body coordinates clocks. When a country changes its offset or DST rules, volunteers on the tz mailing list track the announcement, verify it, and commit the update. The next tzdata release ships it to every operating system.
Egypt has changed DST policy repeatedly. Libya has oscillated between UTC+1 and UTC+2. Morocco suspends DST during Ramadan, a religious calendar that shifts roughly 11 days earlier each Gregorian year. These changes are uncoordinated. Each nation decides alone.
IANA vs CLDR: Logic vs Display
IANA gives you the offset and rules. Unicode CLDR gives you the localised name. Africa/Lagos is UTC+1. CLDR supplies the French string "Heure normale d'Afrique de l'Ouest" or the Arabic label for Egypt's zone. You need both: IANA for computation, CLDR for what the user sees. Relying on IANA alone leaves you with codes like +01. Accurate, but not human.
Using IANA Zones in Code
Always use IANA zone names. Never hardcode a fixed offset. Offsets change with DST in Egypt, Morocco, and Western Sahara. IANA names track those changes automatically.
Python:
python
from zoneinfo import ZoneInfo
from datetime import datetime
now = datetime.now(ZoneInfo("Africa/Lagos"))
print(now.isoformat())
JavaScript:
javascript
const now = new Date().toLocaleString("en-NG", { timeZone: "Africa/Lagos" });
Go:
go
loc, _ := time.LoadLocation("Africa/Lagos")
now := time.Now().In(loc)
Prefer canonical zones. Avoid aliases unless legacy data demands them. When accepting user input, map common names like "Lagos" or "Cairo" to their IANA zone yourself.
How many time zones does the continent actually have?
Six offsets span the landmass: UTC−1 (Cabo Verde), UTC+0, UTC+1, UTC+2, UTC+3, and UTC+4 (Mauritius, Seychelles, Reunion). Some sources say five or seven depending on whether they count disputed territories. Six is the figure the database supports.
Does South Africa observe daylight saving time?
No. South Africa abandoned DST in 1944. SAST (UTC+2) runs year-round. Botswana, Mozambique, Zimbabwe, and most of the southern region do the same.
Why is Ghana on GMT and not WAT?
Ghana sits at UTC+0. West Africa Time is UTC+1. Despite its location in West Africa, Ghana kept GMT after independence. Nigeria and Niger use WAT. Ghana, Senegal, Ivory Coast, and Mali use GMT.
Which countries change their clocks in 2026?
Three. Egypt runs on EEST (UTC+3) during summer. Morocco and Western Sahara shift to UTC+1 in summer and return to UTC+0 in winter, with a Ramadan suspension in Morocco. Every other country stays on permanent standard time.
CAT and SAST: the same offset, different names
Both are UTC+2. CAT (Central Africa Time) covers DRC, Zambia, Zimbabwe, and others. SAST (South African Standard Time) is the official label in South Africa, Lesotho, and Eswatini. The IANA database treats them as identical.
Is Mauritius on East Africa Time?
No. Mauritius uses UTC+4. East Africa Time is UTC+3. Mauritius, Seychelles, Reunion, and Mayotte run one hour ahead of Nairobi and Dar es Salaam. The assumption that they share EAT is wrong.