First of Date.parse()
isn't properly supported in all browsers (IE lt 9), so I would suggest you use the Date objects .set*()
functions. Second, since your times doesn't have any date, you need to base them against start of the day. This should work and be browser safe http://jsfiddle.net/6q3WB/.
var baseDate = new Date();
timeElapsed = "01:23:00", // time elapsed
timeElapsedParts = timeElapsed.split(':'),
timeElapsedDate = new Date(),
timeElapsedInMilliseconds = 0,
timeTotal = "07:34:00", // total time
timeTotalParts = timeTotal.split(':'),
timeTotalDate = new Date(),
timeTotalInMilliseconds = 0,
timeDifferenceInPercentage = 0;
baseDate.setHours(0);
baseDate.setMinutes(0);
baseDate.setSeconds(0);
baseDate.setMilliseconds(0);
timeElapsedDate.setHours(timeElapsedParts[0]);
timeElapsedDate.setMinutes(timeElapsedParts[1]);
timeElapsedDate.setSeconds(timeElapsedParts[2]);
timeElapsedDate.setMilliseconds(0);
timeTotalDate.setHours(timeTotalParts[0]);
timeTotalDate.setMinutes(timeTotalParts[1]);
timeTotalDate.setSeconds(timeTotalParts[2]);
timeTotalDate.setMilliseconds(0);
timeElapsedInMilliseconds = (timeElapsedDate.getTime() - baseDate.getTime());
timeTotalInMilliseconds = (timeTotalDate.getTime() - baseDate.getTime());
timeDifferenceInPercentage = (Math.round(((timeTotalInMilliseconds - timeElapsedInMilliseconds) / timeTotalInMilliseconds) * 10000) / 100);
console.log(timeDifferenceInPercentage + '%');