Okay, let's go back to what it is that you want to do.
If it's an alarm clock...
you have a set time, at that time, it does something (buzzer, radio, whatever) and starts a countdown. If you press the button, you want it to stop doing what it's doing, and abort the countdown, and go back to waiting for the next alarm event, is that correct?
your loop() function should update the display if/when minutes change. You could flash the colon at 1 second intervals by using a boolean variable for the visibility of the colon. (Say, make it visible if the current seconds value is an even number.) Whatever, the main portion of this loop just shows the time.
At the alarm set time, you can call a separate routine to do the alarm/countdown timer, but I probably wouldn't. I'd just set a starttime variable, and set a boolean flag for doing the alarm event. set the output pin to do the alarm stuff when you set the starttime variable.
If the alarm event flag is true, check for the button press. If it is, unset the alarm output pin, and unflag the alarm event. (If you have 2 buttons, and one is the snooze, you can make a separate alarm start event now.)
If the alarm event is true, alter the display to show the countdown instead of the time. (Or not. the buzzer is enough, IMO.)
if the countdown time is expired, stop the alarm event, and reset the alarm event flag.
repeat. (end the loop function)