bash, 78 octets (à l'aide d'un utilitaire BSD) ou 79 octets (non BSD également)
C'est un peu plus long que @DigitalTrauma et la belle solution bash de 71 octets de @ hvd, mais j'ai un peu aimé l'idée ici d'utiliser des nombres en base 60; Je suis curieux de savoir si quelqu'un peut jouer au golf un peu plus.
Avec l'utilitaire jot standard BSD:
jot '-wx=`dc<<<60do3^%d+n`;((`dc<<<$x++'$1'-n`))||tr \ :<<<${x:3}' 86400 0|sh
Avec l'utilitaire seq plus universellement disponible:
seq '-fx=`dc<<<60do3^%.f+n`;((`dc<<<$x++'$1'-n`))||tr \ :<<<${x:3}' 0 86399|sh
L'idée est de générer les nombres de 0 à 83699 et d'utiliser dc pour les convertir en base 60. Les "chiffres" dans la sortie base-60 de dc sont des nombres à 2 chiffres de 00 à 59, avec des espaces séparant les "chiffres", donc cela répertorie toutes les heures souhaitées de 00 00 00 à 23 59 59 dans presque le format requis.
Si vous effectuez littéralement cela, cependant, les nombres inférieurs à 60 ^ 2 ne sont pas des nombres à 3 chiffres dans la base 60, donc le 00 ou 00 00 initial est manquant. Pour cette raison, je génère en fait les nombres de 60 ^ 3 à 60 ^ 3 + 83699; cela garantit que tous les nombres générés ont exactement 4 chiffres en base 60. C'est OK tant que je jette finalement le premier chiffre supplémentaire (01) qui n'est pas nécessaire.
Donc, une fois que les temps souhaités sont générés, je prends simplement chaque quadruple de 01 00 00 00 à 01 23 59 59, j'ajoute les trois derniers nombres et je soustrais l'argument $ 1. Si c'est 0, je prends alors tout dans le quadruple à partir du 3ème caractère (jetant le "01"), utilise tr pour convertir les espaces en deux-points et imprime le résultat.