at a minimum, you need to shift out 33 bits: largest time value displayed= 23.59.59,, 2+3+5+9+5+9= 33.
That would be five 8-bit shift registers (33/8=4.125, but you can not, to my knowledge get a one bit shift register...). you divide your raw time value (in seconds) by 3600 (number of seconds in an hour) to get the raw hours time value, take the integer value of the raw hours and 1) store that in a digital hours variable, 2) subtract (that3600) from the raw time to get remaining minutes/seconds. divide remaining minutes/seconds by 60 (number of seconds in a minute) to get raw minutes. Take the integer value if raw minutes and 1) stash it in a digital minutes variable, 2) subtract minutes (minutes variable60) from remaining minutes/seconds to get remaining seconds. stash that into a digital seconds variable.
feed digital seconds variable into a proc to break it down into Tens and Units. shift out Units, shift out Tens.
feed digital minutes variable into the breakdown proc and shift out Units, shift out Tens.
do the same for Hours...
lock the shift registers and use the parallel bits to drive your lamps (with a mosfet switch).
Seems like a big waste to me, but it's your project. have fun.