diff --git a/Marlin/duration_t.h b/Marlin/duration_t.h
index dffb832545dcb98f0d85b7e1c430db39a8566d24..926fc1360dd082c8ee3d619329204887e78ca61f 100644
--- a/Marlin/duration_t.h
+++ b/Marlin/duration_t.h
@@ -146,12 +146,14 @@ struct duration_t {
* 11d 12:33
*/
void toDigital(char *buffer, bool with_days=false) const {
- uint16_t h = uint16_t(this->hour() % 24UL),
+ uint16_t h = uint16_t(this->hour()),
m = uint16_t(this->minute() % 60UL);
if (with_days)
sprintf_P(buffer, PSTR("%ud %02u:%02u"), this->day(), h, m);
+ else if (h < 100)
+ sprintf_P(buffer, PSTR("%02u:%02u"), h % 24, m);
else
- sprintf_P(buffer, PSTR("%02u:%02u"), h, m);
+ sprintf_P(buffer, PSTR("%u:%02u"), h, m);
}
};