It’d be a brave man who tried: from previous threads here and elsewhere it seems to be all over the shop, with exceptions to every case. While there may be regional trends, there seem to be large elements of social class, family tradition and personal preference mixed in too.
It helps to understand the history, which I’ve posted on before, but I’m going to do it again because it’s interesting and relevant (or I think it is )
Until (I think) sometime in the nineteenth century, it was simple and uncontroversial: “dinner” was the main cooked meal of the day, taken anytime between 11 am and 9 pm or so, depending on what suited your lifestyle. If you had your dinner early, around midday, you’d have a light meal later in the evening, and that would be “supper”. If you had your dinner late, you’d keep yourself going with a light “lunch” around noon.
When you had dinner depended to a large extent on what you did for a living. Generalising wildly (there are exceptions everywhere, which is part of the reason things are still so mixed up), the working man in a factory would get a break around noon, and since he lived nearby, would go home for a cooked dinner. Mr middle class, who worked in an office in the city, but lived in the suburbs, didn’t have that option, and so had lunch at that time. The middle classes and upper classes, too, would be more likely to be entertaining in the evening, too, so they had another reason for preferring dinner late.
Afternoon “tea” was originally an occasion for the ladies of the upper and middle classes (who of course did not work) to socialise, and was, to begin with, just a cup of tea (and perhaps some bread and butter or a biscuit). Over time the term came to be used for a wide range of events in the mid- to late afternoon, up to quite large and elaborate sit-down meals.
What seems to have happened is that people have tended to fix the name of their meals based on their timing, rather than what they consist of: for some, a midday meal is dinner, even if they’re only having a sandwich; while for others it’s lunch, even if it’s a cooked three course meal. Likewise, for some people the main meal of the day is “tea” because they’re used to having it in the late afternoon/early evening.
Naturally, there’s a whole layer of [del]snobbery[/del] status-consciousness, too, with the uppper/middle class “lunch” tending to replace the more working-class “dinner”; and of course people’s life-styles have altered markedly in the last half-century – some have changed what they call their meals in response, and some haven’t.