Johannesburg has one of the world's best climates. Summers are sunny and hot (never humid), with short afternoon thunderstorms. Winter days are bright and sunny, but nights can be frosty. Although November through January is Cape Town's most popular time, with glorious sunshine and long, light evenings, the best weather is between February and March. Cape winters (May through August) are unpredictable with cold, windy, rainy days interspersed with glorious sun. The coastal areas of KwaZulu-Natal are warm year-round, but summers are steamy and hot. The ocean water is warmest in February, but it seldom dips below 17°C (65°F).
The best time to go on safari is in winter, May through September. The vegetation is sparse so it's easier to spot game, and water is scarce so game congregates around photo-friendly water holes. However, although it's very hot in summer (October through April), the bush looks its best; there will be lots of young animals, and the summer bird migrants will have returned. That said, keep in mind that hotel prices rise dramatically and accommodations are at a premium November through March. At most private game lodges you'll see game year-round.
For weather forecasts for the whole country, check out