perchè non solo getHours, getMinutes e getSeconds, ma anche getDate e getMonth, ritornano un numero, non una stringa, di solito il faccio:

codice:
var d = new Date();
var str = "";
str += d.getHours() < 10 ? '0'+d.getHours() : d.getHours();
str += ':';
str += d.getMinutes() < 10 ? '0'+d.getMinutes() : d.getMinutes();
str += ':';
str += d.getSecondes() < 10 ? '0'+d.getSecondes() : d.getSecondes();
alert(str);