If it just started happening, and he was following a good schedule previously, my best guess is a growth spurt.....children will sleep more and generally eat less during a growth spurt. I remember my daughter at the same exact age waking me up at 3am for some oatmeal and toast, LOL.....she wanted breakfast, and at the time, was not eating great.
I've always been the type of mother to say, "NEVER WAKE A SLEEPING BABY!!"
And generally, you're best not to, however, if you are losing sleep, you have to do something, so I'd give him a week to see if his schedule normalizes on it's own, and if not, then you may have to wake him from his suppertime nap after about an hour or so. It's much easier to wake a kid up than it is to try to keep them awake, from my experience. So if he falls asleep around 4 or 5, wake him by 6, have dinner and play, etc and try to get him back down by 7:30.
That being said, depending on where you are at the moment, I know the heat has been terrible this year in some places, and that could also be a factor. My kiddies are worn out.
And of course, if you feel something is amiss with him, do not hesitate to take him to the pediatrician.
Good luck and good sleep ahead!
Its hard isn't it trying to get it all to fit together . I am thinking it may be better for him to stay awake , play with him, stimulate him when he comes home instead of him dozing off.,or let him have a short time asleep not till 12 thats where the problem lies ..he is sleeping too long in the evening.he also needs to be with you not asleep as he goes to day care and doesnt see you or his Dad.So maybe try this .when he comes home have a play with him do some fun things together so he is getting time with you, if hes tired let him have a short nap.then another play and dinner .You have to fix his routine to a more normal one , his eating is all mixed up aswell. The routine he had before was working .I know its not easy but until you get him into a better eating /sleeping pattern you will all be exhausted .