Time checking on reset

Your current problem may be fixed, but there are others that you haven't discovered yet.

For example, code that checks hour() twice may occasionally fail because the checks happen to overlap a change of hour just right. It won't fail often, just enough to drive you quietly crazy. Maybe the occasional failure doesn't concern you.

delay(...) statements are suspect as well, as are print(...) statements in a loop.

Good luck!