You can just split into the parts and format using a suitable method. How much functionality you build into the parser/formatter depends on how many different formats of input and output you want to support.
You could write a much more general parser/formatter, but if you only need to support one format, something simple should do, e.g.
function formatTime(v) {
var [h,m,s] = v.split(':').map(Number);
return (h? h + ' hour' + (h != 1? 's' : '') : '') +
(m? ' ' + m + ' minute' + (m != 1? 's' : '') : '') +
(s? ' ' + s + ' second' + (s != 1? 's' : '') : '');
}
['01:30:00', '21:01:05', '00:10:01', '16:00:08'].forEach(v =>
console.log(v + ' => ' + formatTime(v))
);