Are these prepositions correct? Almost.
At five o'clock = fine
on 14th February = fine (but 'on February 14th' is more common in US English)
at midnight = fine
on Mother's Day = fine
on September : NO. It should be 'in September'
in Spring = fine
At the holidays = NO. I should be 'in the holidays' or 'during the holidays'
At the weekend = fine in British English ('on the weekend' in US English)
on the 21st century = NO. It should be 'in the 21st century'
This really isn't as complicated as it looks. Just remember this:
Use 'at' for times on the clock - at 5 'clock, at midnight, at lunchtime
Use 'on' for single days - on Monday, on 14th February, on Mother's Day, on my birthday, and so on.
Use 'in' for all longer periods - in September, in Spring, in the holidays, in 2005, in the 1990s, in the twentieth century, and so on.
The only odd one is 'weekend', which is 'at the weekend' in British English, but 'on' in American English.
Not so difficult, is it?