The setup usually uses the main level for availability so i'm going to assume that's how your system is configured.
You're going to have to check your menu level classes and change the links for some of your menu items. The idea is to set the menu level class for each menu item to the times you want it to be available; creating any classes you need but don't have. It's usually safe to check all the sublevels; they're most often used for pricing or in multi-unit systems that use the main level to define units. Look at your existing menu item classes and let me know if you have any without all sublevels checked.
For lunch, happy hour and dinner you'll need the following classes. The main levels you'll need to check are listed. I'm going to use main levels 1=lunch, 2=happy hour, 3=dinner for my example, change this as you need for your system. To find this just look at your auto-level setup screen and see what main level is assigned to each.
all levels 1/2/3
lunch 1
happy hour 2
dinner 3
lunch/dinner 1/3
lunch/happy hour 1/2
dinner/happy hour 2/3
Most systems will come with at least some of these classes, especially All Levels. You're menu items probably already have that assigned to them. If you already have the auto-levels set up, don't mess with them. Use the level classes to work with your auto-levels to enable/disable items for your dining periods.
Since you have time to test it, make some dummy menu items, one for each menu item class you're going to use. Assign each of the classes to one of these items, give them all the same SLU, and then go through your auto-levels to make sure the right items are showing up at the right times. Once you have it working right you can reassign the classes for existing items. Also, make sure you have at least Lunch and Dinner buttons available to temporarily change the active menu level. That just makes it easier when you have a lunch guest who wants the meal he had last week at dinner.