For `<input type=time max=17:00 value=0>` and `stepDown`, Blink sets the value to `0:00` while we compute `23:45`. The spec is slightly ambiguous here. What is happening is that in [Gecko GetValueIfStepped](https://searchfox.org/mozilla-central/rev/5756c5a3dea4f2896cdb3c8bb15d0ced5e2bf690/dom/html/HTMLInputElement.cpp#1989) / [spec stepDown](https://html.spec.whatwg.org/#dom-input-stepdown), `value` is empty and thus taken as zero. We subtract 15 minutes, value becomes negative and thus less than the maximum (see step 9). In step 11 / [ConvertNumberToString](https://searchfox.org/mozilla-central/source/dom/html/input/DateTimeInputTypes.cpp#213), we then have to [return a valid time string that represents the time that is input milliseconds after midnight on a day with no time changes](https://html.spec.whatwg.org/#time-state-(type=time):concept-input-value-number-string). So the problem boils down to whether "negative 15 minutes after midnight" is midnight or `23:45` of the previous day.
Bug 1749427 Comment 5 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
For `<input type=time max=17:00 value=0 step=900>` and `stepDown`, Blink sets the value to `0:00` while we compute `23:45`. The spec is slightly ambiguous here. What is happening is that in [Gecko GetValueIfStepped](https://searchfox.org/mozilla-central/rev/5756c5a3dea4f2896cdb3c8bb15d0ced5e2bf690/dom/html/HTMLInputElement.cpp#1989) / [spec stepDown](https://html.spec.whatwg.org/#dom-input-stepdown), `value` is empty and thus taken as zero. We subtract 15 minutes, value becomes negative and thus less than the maximum (see step 9). In step 11 / [ConvertNumberToString](https://searchfox.org/mozilla-central/source/dom/html/input/DateTimeInputTypes.cpp#213), we then have to [return a valid time string that represents the time that is input milliseconds after midnight on a day with no time changes](https://html.spec.whatwg.org/#time-state-(type=time):concept-input-value-number-string). So the problem boils down to whether "negative 15 minutes after midnight" is midnight or `23:45` of the previous day.
For `<input type=time max=17:00 step=900>` and `stepDown`, Blink sets the value to `0:00` while we compute `23:45`. The spec is slightly ambiguous here. What is happening is that in [Gecko GetValueIfStepped](https://searchfox.org/mozilla-central/rev/5756c5a3dea4f2896cdb3c8bb15d0ced5e2bf690/dom/html/HTMLInputElement.cpp#1989) / [spec stepDown](https://html.spec.whatwg.org/#dom-input-stepdown), `value` is empty and thus taken as zero. We subtract 15 minutes, value becomes negative and thus less than the maximum (see step 9). In step 11 / [ConvertNumberToString](https://searchfox.org/mozilla-central/source/dom/html/input/DateTimeInputTypes.cpp#213), we then have to [return a valid time string that represents the time that is input milliseconds after midnight on a day with no time changes](https://html.spec.whatwg.org/#time-state-(type=time):concept-input-value-number-string). So the problem boils down to whether "negative 15 minutes after midnight" is midnight or `23:45` of the previous day.