I find that different people have different expectations about what is a good length of time for a visit. With DH's family, we're expected to show up several hours before the meal, and stay for several hours after. In my family, an invitation for a meal means showing up shortly before the meal time, and visiting for an hour or two after, so 3-4 hours, tops.
The problem is, each group thinks their way is "normal". When DH's family comes to our house they expect to be there for six to eight hours! In their minds, it doesn't really count as a good visit unless a lot of time is spent together. For "dinner" they expect to show up at 2pm and leave no earlier than 8pm.
I deal with it by not offering to host family get-togethers for DH's family unless I'm prepared to spend a full day doing nothing else. Trying to restrict the event to only a few hours would hurt their feelings and they would interpret it as "I don't want to spend time with you." It's not a hill for me to die on, so I just go with it when I'm hosting. When we go to someone else's house we sometimes arrive later or leave earlier if we have other things we need to do that day - for some reason that doesn't offend the way hustling them all out the door would.
For the OP, I think the only way to get a group that perceives long visits as "normal" to get out after a few hours is to make it clear when inviting that there is a firm ending time, and that you have to do something else (in other words, it's not about them).