I just want to ask if when would be the exact time to use have a good day? Because someone told me that the appropriate time would be in morning. Is that correct?
As a German native speaker, I would suggest using the full form ("10:00 am") when possible, though the short form should suffice. When no "am" is present, Germans may assume the time is given in 24h form. Germans who are aware of the am/pm distinction in English may be confused when it is missing.
As for the colon vs decimal, I've encountered both forms in German and though I personally prefer the colon, some style guides may disagree (I would have to check the Duden).
So to answer your question: avoid "10 o'clock" as it may be considered ambiguous. As a rule of thumb: if it's before noon, use the "am" form; if it's after noon, use the 24h form or use the "pm" form with the 24h form in parentheses like so:
arrrive at 10 pm (22:00 h)
Alternatively, qualify the time (e.g. "at 10 in the morning") like emragins suggested.
In any case, the American "military time" form ("2200 hrs") will sound odd to most Germans. If there is no separator between the hour and minute in German, it's usually due to laziness, not style.
Dawn refers to the time around the actual solar event that is sunrise.
Morning refers to any time before noon, so 1am is still the morning.
Very early morning is sometimes known as "the small hours" (or any regional variant of those words). The actual time is variable, although you will probably provoke a laugh from working people if you refer to any time after 7am in that way (and probably any time after 6am).
Noon refers to 12pm (exact midday) and the time just around it. 1101 is not noon.
Afternoon refers to the time after Noon and before the Night. "Good afternoon" is only used after noon.
Dusk corresponds to dawn, and refers to the event of the sun setting.
Evening is variable in its usage, and is tied both to work schedules and the solar time. It's pretty much always correct to refer to the part of the day when the light begins to wane as "evening".
Night refers to the time after sunset. Accordingly, it can be both morning and night (this being pretty much the definition of the small hours).
Midnight refers to exactly 0000/2400 hours, and the time just around it. 2301 is not midnight.
"Good night" does not mean "have a good sleep". It is used as a farewell when it is late, whether anyone is planning on going home or not.
Lunch is a meal taken between breakfast and the evening meal (howsoever called). It is not tied to any specific time beyond that.
The main evening meal may be called "dinner", "supper", or "tea" depending on regional dialect and class. "Dinner" is probably the most neutral option in most dialects (although in some dialects it means the main meal of the day even if that was lunch, or it may mean something else). If a second evening meal is taken, or a very late evening meal is taken, it might be called supper in distinction to dinner. This is not so common any longer.
"Afternoon tea" is a specific meal. Its defining feature is not really that it is taken in the afternoon, but rather the elements it is composed of: it will be a short snack, usually of tea or coffee and a sweet or savory baked good. "Morning tea" is the corresponding snack in the morning.
We are not "fixing" you, because you are not broken. We are correcting you in so far as we think you are wrong.