Africa/Johannesburg time zone

3:50PMSAST

SASTUTC+2+7 h vs New York (you)

No transitions: Africa/Johannesburg stays on SAST (UTC+2).

About Africa/Johannesburg

Africa/Johannesburg is the IANA time zone for South Africa, Lesotho and Eswatini. It currently keeps South Africa Standard Time (SAST, UTC+2) all year.

The zone serves 3 countries or territories because their clocks have agreed since 1970; tzdata lists them together in zone1970.tab. That says nothing about borders or sovereignty, as the file’s header points out.

Its principal location is Johannesburg at 26.25° S, 28.00° E.

Abbreviations in use: SAST. Offset page: UTC+2.

Rule for future years (POSIX TZ string)

SAST-2

The standard time is called SAST and is UTC+2. POSIX writes the offset with the opposite sign (west of Greenwich is positive), which is why the string says "-2". There is no daylight saving rule: the zone stays on this offset for every year after the end of its explicit transitions. Software that has no full tzdata copy, such as many embedded devices, can use this string directly as the TZ environment variable.

History of Africa/Johannesburg since 1970

The record starts with local mean time (UTC+1:52), which ended on February 8, 1892. The first daylight saving time in the record is in 1942.

YearsClocksAbbreviations
1970 onwardUTC+2 all yearSAST

Before 1970

6 offset changes before 1970 in the record:

tzdata commits to accuracy from 1970 for every zone (zone1970.tab); earlier entries are historical research and may be incomplete.

Aliases and zones with the same clock

These older or country-specific IDs are links to Africa/Johannesburg in tzdata. Their pages redirect here: Africa/Maseru, Africa/Mbabane.

Other zones that keep exactly the same time under the current rules (but have a different history): Africa/Juba, Africa/Khartoum, Africa/Maputo, Africa/Tripoli, Africa/Windhoek, Europe/Kaliningrad.

Places on Africa/Johannesburg

Convert Johannesburg time

Tip: Alt+↑/↓ steps the time by 15 minutes (Shift: one hour). The link keeps the date, time and direction.

Using Africa/Johannesburg in code

Every major platform reads the same IANA ID. Store instants in UTC and convert with the ID at display time; never store a fixed offset for a place that has daylight saving time.

// JavaScript
new Date().toLocaleString('en-US', { timeZone: 'Africa/Johannesburg' })

# Python 3.9+
from zoneinfo import ZoneInfo
from datetime import datetime
datetime.now(ZoneInfo('Africa/Johannesburg'))

// Java
java.time.ZonedDateTime.now(java.time.ZoneId.of("Africa/Johannesburg"))

// Go
loc, _ := time.LoadLocation("Africa/Johannesburg")
time.Now().In(loc)

-- PostgreSQL
SELECT now() AT TIME ZONE 'Africa/Johannesburg';

# Shell
TZ='Africa/Johannesburg' date

Platforms ship their own copy of tzdata and update it on their own schedule. After a rule change, outputs can differ until the platform updates; this page uses tzdata 2026f.

Questions

What is the UTC offset of Africa/Johannesburg?
UTC+2 all year.
Does Africa/Johannesburg observe daylight saving time?
No, not under the current rules. The last year with daylight saving time in its record is 1943.
Is Africa/Maseru the same as Africa/Johannesburg?
Yes. Africa/Maseru and Africa/Mbabane are a link (alias) to Africa/Johannesburg in tzdata and give the same time since 1970. They remain valid IDs.
Which countries use Africa/Johannesburg?
South Africa, Lesotho and Eswatini, according to zone1970.tab in tzdata.

Related