Couple of things worth noting.
firstly you are using a concept taught for best part of 30 years in education that is frankly years out of date.
When using time and measuring time, use the appropriate Date objects to create the data you need to access or manipulate, toUTCString() string method gives you a string that can be use, hacked up, and its ready formatted for you.
There is also the case of you using setTimeout() event timer, using them for a clock timer set up is not advised, you should be using setInterval event timer instead and for two reasons, first is that settimeout with repeated use will introduce a time lag where the clock and the actual time drifts (your clock will be slower) compared to a setInterval timer that once set does not introduce any time lag, only needs to be set once because the event will trigger at that exact time every x milliseconds. The reason for the lag is because each time you call to initiate a setTimeout, it requires time itself to initiate then run, there are clock cycles that are missed because of this setting up time period, this can be as large as 1/4 or a second because unlike setInterval, once setInterval is set, it introduces no additional overheads in to the script runtime or system lagging.
IMHO If you are going to use web form elements, then you should really use a web form, that way you can use a more direct method for accessing values in your options. You would be IMHO better off using number inputs for this,
<input type="number" name="alarm" data-entry="hours" min="0" max="23" value="12" >
<input type="number" name="alarm" data-entry="minutes" min="0" max="59" value="00" >
<input type="number" name="alarm" data-entry="seconds" min="0" max="59" value="00" >