Claro que se puede:
Código Javascript
:
Ver originalvar hora1 = ("04:29:01").split(":"),
hora2 = ("03:28:56").split(":"),
t1 = new Date(),
t2 = new Date();
t1.setHours(hora1[0], hora1[1], hora1[2]);
t2.setHours(hora2[0], hora2[1], hora2[2]);
//Aquí hago la resta
t1.setHours(t1.getHours() - t2.getHours(), t1.getMinutes() - t2.getMinutes(), t1.getSeconds() - t2.getSeconds());
//Imprimo el resultado
document.body.innerHTML = "La diferencia es de: " + (t1.getHours() ? t1.getHours() + (t1.getHours() > 1 ? " horas" : " hora") : "") + (t1.getMinutes() ? ", " + t1.getMinutes() + (t1.getMinutes() > 1 ? " minutos" : " minuto") : "") + (t1.getSeconds() ? (t1.getHours() || t1.getMinutes() ? " y " : "") + t1.getSeconds() + (t1.getSeconds() > 1 ? " segundos" : " segundo") : "");
El resultado es:
Código HTML:
Ver originalLa diferencia es de: 1 hora y 5 segundos
Con tus datos, el resultado sería: "La diferencia es de: 5 segundos".
Tenemos inicialmente 2 horas con el formato
HH:MM:SS, a cada una la convierto en un array distinto, separando sus elementos desde el ":" que separa las horas de los minutos y segundos, además, creo dos objetos
Date para manipular las horas.
A cada objeto
Date, le asigno las horas, minutos y segundos que obtuve de cada una de las horas en cuestión, luego, asigno al primer objeto sus nuevos componentes de horas, minutos y segundos, que no son otros que la resta de las horas, minutos y segundos del primer objeto con el segundo. Finalmente, imprimo la diferencia.
Así es como se ve en ejecución:
http://jsfiddle.net/pwYG8/
La línea de código de la impresión del resultado es un poco larga porque acomodo las palabras que se mostrarán según el valor de cada parte del objeto
Date, para que cuando haya una hora, un minuto o un segundo en el resultado, se muestre de esa forma y no "1 segundos", por ejemplo.
Saludos