Map from Google - Johannesburg

In Johannesburg, the largest city of South Africa, the climate is subtropical, with mild and sunny winters (when, however, nights are cold), and pleasantly warm summers, usually sunny, but with some afternoon thunderstorms. The city is located near the Tropic, but the climate is tempered by altitude, since it is located on a plateau at 1,700 metres (5,600 feet) above sea level, therefore it's a pleasant and healthy climate (even though the city is polluted).
Being in the Southern Hemisphere, the seasons are reversed when compared with Europe or North America.
The average temperature goes from 10 °C (50 °F) in June and July, to 21 °C (70 °F) in January. Here are the average temperatures.
Average temperatures - Johannesburg
JohannesburgJanFebMarAprMayJunJulAugSepOctNovDec
JohannesburgJFMAMJJASOND
Min (°C)1514131052258111314
Max (°C)272625232118182124252526
Min (°F)595755504136364146525557
Max (°F)817977737064647075777779

Rainfall amounts to 700 millimetres (27.5 inches) per year, and is concentrated in the warm period, from October to March, when the rains occur in the form of downpour or thunderstorm. On the contrary, winter is a dry season, with rare and sporadic rains. Here is the average precipitation.
Average precipitation - Johannesburg
JohannesburgJanFebMarAprMayJunJulAugSepOctNovDecYear
JohannesburgJFMAMJJASONDY
Prec. (mm)1259090501510552575110105705
Prec. (in)4,93,53,520,60,40,20,2134,34,127,8
Days1410118321249131491

Winter, from May to August, is mild and sunny during the day, but nights are cold; in the coldest months, June and July, the minimum temperature is near freezing (0 °C or 32 °F), especially in the outskirts of the city and in the countryside, where light frosts can occur. In the daytime, however, when the sun usually shines, the air is mild, so that the maximum temperature hovers around 18/20 °C (64/68 °F). In August the temperature already begins to increase a bit.
Every once in a while, however, cold air masses arrive here from the south, and in these cases the maximum temperature can remain around 10 °C (50 °F).
Snow is a very rare phenomenon, because winter is a dry season and as mentioned during the day the air is usually mild; sometimes, however, you can see a bit of light snow in the early morning. Snowfalls with accumulation on the ground, however, are not impossible, and occurred in May 1956, August 1962, June 1964, September 1981, on June 28, 2007, and on August 7, 2012. In nearby Pretoria, located at a bit lower altitude, snow is even more rare.

Summer, from November to March, is pleasantly warm, with cool nights, and possible showers and thunderstorms in the afternoon or in the evening. Hot days are rare, as the temperature rarely exceeds 30 °C (86 °F), but the tropical sun at high altitudes is very strong, so it requires appropriate protection.

Spring and autumn are mild and sunny, although sometimes in April and September it can get cold at night, while in October there's often a summer-like weather, warm during the day, and with the first thunderstorms.

The amount of sunshine in Johannesburg is very good throughout the year, since the sky is usually clear, even though the relatively least sunny season is the summer, because of showers and thunderstorms, which, however, do not last long and soon give way to the sun.

Johannesburg

When to go

The best months to visit Johannesburg are probably April, September and October, since they are mild months, less rainy than summer and less cold than winter. However, on closer view, Johannesburg can be visited throughout the year, given that summer is not too hot and it's sunny, even though it is disturbed by thunderstorms, while winter is nearly always mild and sunny during the day, although nights are often cold. The choice may therefore depend on the itinerary: for example, if you want to visit the Kruger Park, in the north-east of South Africa, you can choose winter, from June to August, a period that in the south of the country can be a bit cold and also rainy.