We use AT with specific times (hour / minutes).
Midnight (and midday) is a specific hour which is why we use AT.
12am = midnight --- 12pm = midday / noon
We use ON for specific days and dates.
Remember that for dates, we use ordinal numbers.
E.g. the First of September (not the one of September)
We use IN for specific months, years and seasons.
Compare:
The New Zealand National day is in February. (I don't mention the day - only the month)
The New Zealand National day is on February 6th. (I mention the day - the order is not important)
AT | ||
---|---|---|
Specific times | I start work at 9 o'clock. | |
Festivals in general | I'm going to Brazil at Christmas. | |
Night | I find it difficult to sleep at night. | |
ON | ||
Specific days | I'd like to go to the cinema on Saturday. | |
IN | ||
Parts of the day | I go to the gym in the morning. | |
Months | I normally go on holiday in February. | |
Seasons | We can go skiing in winter. | |
Years | I was born in 1972. | |
A time period | The train leaves in 5 minutes. |
Remember! We do not use at, on, in or the with the following expressions:
Today, tomorrow, yesterday, this morning, tonight, last, next, every.