時刻が指定された形式の場合、次を使用して差を分単位で取得できます。
function diffMins(t0, t1) {
t0 = t0.split(':');
t1 = t1.split(':');
return t1[0]*60 + +t1[1] - t0[0]*60 - +t0[1]
}
これは、次を使用して 10 進数の時間に変換できます。
function minsToHours(mins) {
return (mins/60).toFixed(2);
}
alert(minsToHours(diffMins('17:00', '23:45'))); // 6.75
Date オブジェクトの 10 進数の時間の差を取得する場合は、次のようにします。
function dateDiffInHours(d0, d1) {
return ((d1 - d0) / 3.6e6).toFixed(2)
}
alert( dateDiffInHours( new Date(2012,07,02,17), new Date(2012,07,02,23,45))); // 6.75
文字列を Date オブジェクトに渡すことはお勧めできません。ほとんどのブラウザーは 1 つまたは 2 つの形式を解析しますが、解析しないブラウザーもあります。ESCMA-262 ed 3 で指定された標準形式はありません。日付文字列の解析は完全に実装に依存します。ES5 は ISO8601 拡張フォーマット (例: 2012-07-02T23:45:00Z) の修正を指定していますが、使用されているブラウザーのかなりの割合がそれをサポートしていません。
そのため、常に自分で文字列を解析するか、ECMAScript 仕様に従って引数を使用してコンストラクターを呼び出してください。