Issues with Inconsistent Strike Timing on Clock Tower Project

Nice project, would be interresting to see how the Hammer mechanics works. Maybe you have a timing problem caused by your mechanics which is slower than "millis" and out of syncronizing with the program.
Your clock is digital or analog classic ?
My favorate projects are also clocks. On a Kuckuck clock project I implemented some similar funktionality as your project.
About your program, you are not defining any funktions to make the program more understandable and easier to debug. Put your Hammer operation into a funktion e.g. called void hammerStrike()
For the active operating hours of the bell define a bool variable, e.g. bellActive and define the active hour conditions once after getting the new hour values like this:

if(newHour >= nightLimit && newHour <= dayLimit) 
 {bellActive = HIGH;} 
else 
 {bellActive = LOW;}

dayLimit and nightLimit are the limit hours for the period you want to hear the bell.
I think the RTClib.h has a funktion to set the clock to 12 hour ore 24 hour mode. Check this, you don“t need to adapt 24 hour mode to 12 hour mode manually by rest 12 from the value the clock returns.
Make your program more compact then you can position debug messages on the serial monitor more efficient.