zu Mittag
Where did you find »am Mittag«? This is wrong. This would be correct:
Die jungen Männer wandern zu Mittag.
»zu Abend essen« vs. »am Abend«
Sie essen bei Sonnenuntergang zu Abend.
They have dinner at sunset.
»Zu Abend essen« is a phrase, meaning »having/eating dinner«. It has nothing to do with the time of day »am Abend«. You even could say:
Sie essen am Abend zu Abend.
They have dinner at evening.
Just telling that someone is having dinner, without saying when:
Sie essen zu Abend.
They have dinner.
(Well, normally you eat dinner at evening, so the information that they eat it at evening ist still there implizit, like you know that someone who eats breakfast probably will do it in the morning.)
Telling that someone is doing something (here: read books) at the evening:
Sie lesen am Abend Bücher.
They read books at evening.
Without mentioning the books:
Sie lesen am Abend.
They read at evening.
You also can tell, that someone is eating at the evening, without saying that the meal is dinner:
Sie essen am Abend.
They eat at evening.
Sie essen am Abend kein Fleisch.
They don't eat meat at evening.
Lists of temporal prepositions
Combinations of prepositions and daytime are very inconsistent in German. Here is a list:
bei Sonnenaufgang
am Morgen
in der Früh (*)
am Vormittag
zu Mittag
am Nachmittag
am Abend
bei Sonnenuntergang
in der Nacht
um Mitternacht
(*) »In der Früh« is a Synonym for »am Morgen«, used in the the south of the German spoken area, i.e Austria and Bavaria.
If you use a proper time specification, you always use um:
um 17:32 Uhr (read: um siebzehn Uhr zweiunddreißig)
um zwölf Uhr
um halb vier
um viertel sechs
um halb sechs
um dreiviertel sechs
um viertel nach/über sechs
um 10 vor drei
Note, that the time specifications itself are subject of regional variations, but you always use the preposition »um«.
Für a day of week, you always use »am«:
am Montag
am Samstag
For Months you always use »im«:
im Juli
im September
Also »im« for all seasons:
im Frühling
im Herbst
Unnamed holidays need different prepositions:
in den Ferien (Ferien is always plural)
im Urlaub (Urlaub is always singular)
Named holidays come with »an« or »zu«:
zu Ostern, an Ostern
zu Pfingsten, an Pfingsten
zu Weihnachten, an Weihnachten
The version with »an« is more common in northern parts of Germany. In southern parts and Austria you will more often hear »zu«.