Map from Google - South_Africa

The Republic of South Africa, the southernmost African country, extends from 22° to 34° south, and is covered in large part by a plateau, which tempers the summer heat but cools the winter nights. Being in the Southern Hemisphere, it has seasons opposite to Europe or North America. Apart from the southern coastline, the country is usually more arid in the west than in the east.

Area having a Mediterranean climate
In the southwestern coast, the climate is Mediterranean, with mild, rainy winters and warm, sunny summers. In Cape Town, the average temperature goes from 12 °C (53.5 °F) in July, to 21 °C (70 °F) in January and February. The summer temperatures are not excessively high, due to the influence of the ocean, though sometimes a hot dry wind that can raise the temperature to around 35 °C (95 °F), called Berg blows from the mountains. On the contrary, in summer often the Cape Doctor blows, a strong southern breeze which cools the air and cleans it from pollution. On top of Table Mountain, the flat-topped mountain overlooking the city, about a thousand metres high, often a layer of clouds forms, which the city's inhabitants call in a colloquial manner "tablecloth".
Here are the average temperatures of Cape Town.
Average temperatures - Cape Town
Cape TownJanFebMarAprMayJunJulAugSepOctNovDec
Min (°C)1616141298789111315
Max (°C)262725232018181819212425
Min (°F)616157544846454648525559
Max (°F)798177736864646466707577

Throughout the year, in Cape Town 505 millimetres (20 inches) of rain fall, with a maximum in winter, from June to August. Here is the average precipitation.
Average precipitation - Cape Town
Cape TownJanFebMarAprMayJunJulAugSepOctNovDecYear
Prec. (mm)12817458580857045301711505

Given that summer is not too hot and it's also windy, the best time to visit the city goes from December to February, being a sunny and not too hot period. Even spring, from September to November is a good time, as it generally happens in areas with a Mediterranean climate, because it's a mild season, during which nature is in bloom.

Cape Town

The sea temperature is not high, however, it's slightly milder in the sheltered False Bay, east of Cape of Good Hope, than along the Atlantic coast to the west: in the former it reaches 20 °C (68 °F) in January and February, while in winter it does not decrease much, but only to 16 °C (61 °F). In Cape Town, it never reaches 20 °C (68 °F), therefore it's a bit cold even in summer, as we can see in the following table.
Sea temperature - Cape Town
Cape TownJanFebMarAprMayJunJulAugSepOctNovDec
Sea (°C)191918171716151515161718
Sea (°F)666664636361595959616364

The cities situated at the foot of the mountains, east of Cape Town, are rainier: in Stellenbosch 930 mm (36.5 in) of rain per year fall, but still with a Mediterranean pattern, therefore with a dry summer, which becomes a little warmer because of the greater distance from the sea. Cape Agulhas, which separates by convention the Atlantic from the Indian Ocean, is windy and overlooks a perilous sea, frequently rough and crossed by strong currents. To tell the truth, even the Cape of Good Hope is not very quiet, as evidenced by the name given originally by its discoverer, Bartolomeu Dias, who named it "the Cape of Storms".

Arid climate zone
The west coast of South Africa, is affected by the Benguela Current, which cools the sea and makes the climate arid, because it inhibits the formation of warm air masses which could rise and condense. In this area, in fact, the annual precipitation drops below 350 mm (13.5 in), but in a wide west-central area, where the southern part of the Namib Desert is found, it drops even below 200 mm (8 in).
Here is the average rainfall of Alexander Bay, in the northern part of the coast, on the border with Namibia, where rainfall drops even below 50 mm (2 in) per year.
Average precipitation - Alexander Bay
Alexander BayJanFebMarAprMayJunJulAugSepOctNovDecYear
Prec. (mm)12244856300237

Along the coast, the cold current also causes the formation of fog, mist and low clouds, especially in the morning. Here the climate is very mild, so that the average daytime temperatures are around 15 °C (59 °F) in winter, and around 20 °C (68 °F) in summer, even though rapid increases in temperature may occur when the wind blows from the desert, which lies to the east and is torrid in summer.
Here are the average temperatures of Port Nolloth, in the northern part of the coast.
Average temperatures - Port Nolloth
Port NollothJanFebMarAprMayJunJulAugSepOctNovDec
Min (°C)151514131111101011121315
Max (°C)191818171717161616161718
Min (°F)595957555252505052545559
Max (°F)666464636363616161616364

Moving inland, we find the plateau, where the influence of the sea is reduced, so that the daily temperature range is noticeably wider. This means that in summer the days can be scorching, but the nights are usually cool, while in winter the nights can be cold, with possible frosts after the outbreaks of cold air of Antarctic origin, while the days remain mild and mostly sunny.
Here are the average temperatures of Upington, located in the western part of the plateau, not far from the borders with Namibia and Botswana, and at 835 metres (2,750 feet) above sea level.
Average temperatures - Upington
Min (°C)222119151065711151720
Max (°C)343331272320202225283133
Min (°F)727066595043414552596368
Max (°F)939188817368687277828891

The rains, which as we said are scarce, occur in winter along the west coast, while in the inland areas they occur in summer, in the form of afternoon showers.
Here is the average precipitation in Upington.
Average precipitation - Upington
Prec. (mm)2535352510424491717187

The Kalahari Gemsbok National Park, which is the South African part of the Kgalagadi Transfrontier Park, on the border with Botswana, is occupied by a dry savannah and also by sand dunes: we are in the southern part of the Kalahari Desert.
The best times to visit the arid zone are spring and autumn, especially the months of April and September.

South and East Coast
The thin coastal strip east of the area of Cape Town, is characterized by a very mild climate, which becomes progressively warmer and rainier as we move towards the east-northeast.
In the southern belt (the area circled in blue on the map), the climate is transitional between the Mediterranean and the warm oceanic: it's cool and breezy, with limited variations in temperature between winter and summer; rainfall is not abundant but it's well distributed throughout the year, with only a slight decrease in summer.
In Port Elizabeth, 630 mm (24.8 in) of rain per year fall, with a relative minimum in summer, between December and February. Here is the average precipitation.
Average precipitation - Port Elizabeth
Port ElizabethJanFebMarAprMayJunJulAugSepOctNovDecYear
Prec. (mm)353550456560605560656040630

Winter looks more like spring, since the average in July is 14 °C (57 °F), although occasionally brief cold waves from Antarctica can lower the night-time temperature to around freezing (0 °C or 32 °F), between June and September. Summer is nice, since the average in January and February is 21 °C (70 °F), with a steady and constant breeze from the sea. Throughout the year, every now and then hot and dry winds blow from the mountains, which lie a short distance from the coast. The best time to visit this area is summer, like in the aforementioned Mediterranean climate zone.
Average temperatures - Port Elizabeth
Port ElizabethJanFebMarAprMayJunJulAugSepOctNovDec
Min (°C)181917151210101112131517
Max (°C)242423222120181818202123
Min (°F)646663595450505254555963
Max (°F)757573727068646464687073

Unlike in Cape Town, in Port Elizabeth the sea is never very cold, and it becomes warm enough for swimming from December to May.
Sea temperature - Port Elizabeth
Port ElizabethJanFebMarAprMayJunJulAugSepOctNovDec
Sea (°C)232424232321202020202123
Sea (°F)737575737370686868687073

In the eastern part of the coast, the area circled in burgundy, the climate gets warmer, with more abundant rainfall in the warm season, so that it can be defined humid subtropical.
In East London, the temperatures are similar to those of Port Elizabeth, but winter is a bit milder; rainfall is more abundant, around 800 mm (31.5 in) per year, with and evident increase in the period from October to March, when moisture is high, even though the temperatures are still not so high; on the other hand, winter is the least rainy season.
Continuing north-east, on the coast of Natal, in Durban it gets quite hot and humid in summer: the average in January and February is around 24.5 °C (76 °F), and the humidity makes the heat muggy, even though the breezes blow in the afternoon, giving a bit of relief; thunderstorms may occur in the afternoon or in the evening, giving some additional relief (or maybe, disturbing those who are sunbathing on the beach). Here, about 1,000 mm (40 in) of rain per year fall, and more than 100 mm (4 in) per month from November to March, while in winter, from June to August, it doesn't rain much. Here is the average precipitation.
Average precipitation - Durban
Prec. (mm)120130115906035254065851201251010

In winter, the daytime temperature is very pleasant, on average around 23 °C (73 °F) during the day.
Average temperatures - Durban
Min (°C)212120171411111315171820
Max (°C)282828262523232323242527
Min (°F)707068635752525559636468
Max (°F)828282797773737373757781

At this latitude, the sea temperature exceeds 23 °C (73 °F) from November to May, and in the end it's not so bad even in winter, since it does not drop below 22 °C (72 °F).
Sea temperature - Durban
Sea (°C)262626252423222222222425
Sea (°F)797979777573727272727577

In winter, however, sometimes it can get a bit cold, especially at night. For beach life, April is probably the best month, since it is a bit less rainy than the summer and warmer than the winter, however, there's some risk of tropical storms in this area (see below), therefore you can choose September and October, although in these months the sea is cooler. To visit the city, the temperatures are good from mid-May to August.

As we have seen, much of South Africa is covered by the highlands. The western part of the plateau has been included in the arid climate zone. In the central and eastern part of the plateau we are dealing with now, the rains become more abundant, especially in the warm season, when the humid currents from the Indian Ocean prevail.
Johannesburg, the capital, is located at 1,700 metres (5,600 ft) above sea level, in the plateau called Highveld, and thanks to the altitude has a mild and pleasant climate, and sunny too. In the warm months, from October to March, it's hot during the day, with possible thunderstorms in the afternoon or in the evening, while the nights are cool. Winter, from May to August, is dry and sunny, with very cool or even cold nights, but generally pleasant days. Sometimes at night the temperature can drop below freezing, especially in June and July. Here are the average temperatures.
Average temperatures - Johannesburg
Min (°C)1514131052258111314
Max (°C)272625232118182124252526
Min (°F)595755504136364146525557
Max (°F)817977737064647075777779

A few times over the last century, even snowfall have occurred, during the period from June to August. Throughout the year, 705 mm (27.8 in) of rain fall on average, of which approximately 90/120 mm (3.5/4.7 in) per month from November to March. Here is the average precipitation.
Average precipitation - Johannesburg
Prec. (mm)1259090501510552575110105705

Having a good climate, Johannesburg can be visited throughout the year, perhaps excluding June, July and early August for the risk of cold. The best months is probably September, being mild, sunny and with little rain. Even April and October, although a little more rainy, are ok.
North-west of Johannesburg, lies the UNESCO World Heritage Site, "Cradle of Humankind", where ancient fossils of Australopithecus Africanus have been found.
North of Johannesburg, we find Pretoria, which is located at a slightly lower altitude, 1,300 metres (4,250 feet), therefore has a similar climate, just slightly warmer than Johannesburg.
Kimberley, the capital of the Northern Cape Province, located at 1,200 metres (3,900 feet) above sea level, is characterized by a hot summer, and by poorer rains, around 435 mm (17 in) per year, most likely from November to April, but less frequent than in Johannesburg. The rainiest months are February and March. Here is the average precipitation.
Average precipitation - Kimberley
Prec. (mm)55657045201561111304560435

For its more southern position, however, the city is more exposed to cold winds and night frosts during the period from May to September. Here too, the amount of sunshine is very good throughout the year, especially in winter.
Average temperatures - Kimberley
Min (°C)1817151173359121517
Max (°C)333129252118192126283032
Min (°F)646359524537374148545963
Max (°F)918884777064667079828690

Bloemfontein, located at 1,400 metres (4,600 feet), south-east of Kimberley, is slightly cooler on average. Here, frosts from June to August are frequent, but during the day the air is usually mild and the sun shines.
The coldest areas of the plateau are the southern ones, which are more exposed to polar air masses. A particularly cold city is Sutherland, located in the south-west, in the arid zone of the Great Karoo, at 1,450 metres (4,700 feet) above sea level. Here in winter snowfalls occur often enough, though typically light because of the dry climate. The coldest record is even -16 °C (3 °F), recorded in July 2003. Precipitation amounts to 245 mm (9.5 in) per year. Near the city, at 1,850 metres (6,000 feet), we find the South African Astronomical Observatory, which includes the Southern African Large Telescope (SALT): this area was chosen because the skies are often clear and the air is limpid. Here are the average temperatures of Sutherland.
Average temperatures - Sutherland
Min (°C)88630-1-2-10257
Max (°C)272724201612121416202325
Min (°F)464643373230283032364145
Max (°F)818175686154545761687377

South African Astronomical Observatory

Near the southern and eastern margins of the plateau, there are several mountain ranges, with peaks often exceeding 2,000 metres (6,500 feet), the most imposing of which is the range of Drakensberg, whose highest peak, 3,482 metres high, is located in Lesotho. Above 2,500 metres (8,200 ft), it can snow from June to August. Along the eastern escarpment, in the provinces of Eastern Cape, Kwa-Zulu Natal and Mpumalanga, the summer rains are plentiful, exceeding 100 mm (4 in) per month, and the total annual can reach 1,000 mm (40 in).

The far north-east of South Africa has a warmer climate than the plateau, both for the lower latitude (it's located on the Tropic of Capricorn), and for the lower altitude (it descends below 1,000 metres or 3,300 feet above sea level).
The Kruger National Park, home to elephants, lions and other animals of the savannah, is located on the border with Mozambique, mostly at an altitude ranging from 300 to 500 metres (1,000 and 1,600 feet). Here the winter is dry and sunny, with large temperature variations between night and day: at night it can get cold, about 10 °C (50 °F) or less, while during the day the temperature is pleasantly warm, around 26/27 °C (79/81 °F): therefore, for safaris during this period it's better to dress in layers. Summer is very hot and humid, with possible afternoon thunderstorms. Here are the average temperatures.
Average temperatures - Skukuza
Min (°C)212019161167913161820
Max (°C)323231292826262729303032
Min (°F)706866615243454855616468
Max (°F)909088848279798184868690

The rains, scarce in winter, become relatively abundant in summer, due to afternoon thunderstorms. The amount of sunshine is good throughout the year. Here is the average precipitation.
Average precipitation - Skukuza
Prec. (mm)959570351510101025456595565

The best period in this area goes from June to August, in order to avoid the rains and the muggy heat of summer: you must, however, be adequately covered in the colder hours. In September and October, it's already hot during the day, sometimes very hot, but nights are pleasantly cool.

Kruger Park

The northernmost area, along the Limpopo River, on the border with Zimbabwe, where the Musina Nature Reserve and the Mapungubwe National Park (formerly Vhembe Dongola National Park) are located, both home to a large number of huge Baobab trees and also animals such as giraffes, antelopes and zebras, is particularly dry, and here days are very hot especially from November to February, when there is also some chance of showers in the afternoon, usually not heavy.

The north-east coast of South Africa, north of Durban, where cities such as Richards Bay and St Lucia are found (but sometimes also in Durban, as happened with the tropical storm Irina in March 2012), sometimes can be touched by tropical cyclones, which form in the Indian Ocean from mid-November to May (but most likely from late December to mid-April), and usually hit the coast of the neighbouring Mozambique, or they can sometimes follow a more southerly path, dissipating in the ocean: although so far no cyclone has ever directly hit the coast of South Africa, the effects in terms of rains, strong winds and storm surges can be remarkable even in this area of the country. Cyclones can also affect the north-east, in the provinces of Limpopo and Mpumalanga, after passing over the coast of Mozambique. In general, the main damage occurs in Mozambique, but in inland South Africa, including the Kruger Park, there may still be heavy rains. One more reason to avoid the austral summer, in addition to the hot and humid weather, which in any case is typical of this period.

When to go

It's hard to find a time that fits for all South Africa, because there are different climates.
A period which can be a good compromise between the different areas is spring, in September and October, in order to avoid the winter cold of mountains and plateaus, the summer heat of inland areas and the summer rains of the east, as well as the tropical cyclones that may affect the eastern regions in summer and autumn.
Wanting to go in the austral winter, for example in July and August, you will have to deal with a bit of cold at night in the northernmost parks, which, however, are mild and sunny during the day, while the cold can at times be intense especially in the highlands of the centre and south, in addition there will be some rains in the area of Cape Town, and some wind along the southern coast, but after all even the austral winter is an acceptable period. If all goes well, it will be possible also to have a swim in the sea in Durban and in the north-eastern coast.
As we have seen, the sea is cold along the Atlantic coast, and gradually milder as we proceed from the south coast to the eastern one.

What to pack

In winter (June to August): for the west and south coast, up to Port Elizabeth, spring/autumn clothes, sweatshirt or sweater and jacket, raincoat or umbrella.
For the north-east coast (see Durban), spring/autumn clothes, a sweater and a jacket.
For the central plateau (Kimberley, Johannesburg), spring/autumn clothes for the day, but also a sweater and warm jacket for the evening; for the southern part of the plateau and at higher altitudes (see Sutherland, De Aar, Bethlehem, Bloemfontein), warm clothes, down jacket, gloves, scarf, hat for the evening.
For the north-east (Messina, Kruger Park) and the Kalahari, spring/autumn clothes, light for the day, sweater and warm jacket for the evening.

In summer (December to February): for the west coast, north of Cape Town, spring/autumn clothes, a sweatshirt and a light jacket.
For the south coast, from Cape Town to East London, light clothing, a sweater and a light jacket for the evening, a scarf for the breeze; for the north-east coast (see Durban), light clothing, a light sweatshirt, umbrella or light raincoat.
For the central plateau (Kimberley, Johannesburg), light clothes for the day, sweatshirt or sweater and light jacket for the evening, sun hat, light raincoat or umbrella; for the southern part of the plateau and at higher altitudes (see Sutherland, De Aar, Bethlehem, Bloemfontein), sweater, spring jacket for the evening.
For the north-east (Messina, Kruger Park) and the Kalahari, very light clothes, of natural fabrics, sun hat, light raincoat, sweatshirt for the evening.