Right. Czech has more of a distinction between an evening and a night than English. Tonight is a very confusing word for czech students as they assume it means 'this night', thus time past 10 pm or so. You would never use 'tonight= this night = tuto noc' for time around 6 p.m. That is strictly an evening. Night is when you typically sleep in Czech. Dnes v noci literally means 'today at night'.
No, we definitely wouldn't say 'dnes v noci' when talking about dinner at 6 pm. As Kacenka explained, in Czech, night is the time when you sleep, and should we generalise, I would also think that the line between evening and night would be around 10 pm. Let me give a few examples:
I'm gonna watch the Lunar eclipse tonight. It should occur around midnight. - Dnes v noci budu sledovat zatmeni mesice. Melo by byt okolo pulnoci.
I'm meeting my boyfriend at 7 pm tonight for cinema and dinner. - Mam dnes vecer v sedm sraz s pritelem, jdeme do kina a na veceri.
If there is not time available, the activity in question might give it away, too: E.g., if you talk about dinner, it'll probably be 'dnes vecer', if you talk about sleeping/a night shift/staying up late/etc., you'll likely use 'dnes v noci'.