7

文字列形式で2時間があり、javascriptで差を計算する必要があるということです。例:

a = "10:22:57"

b = "10:30:00"

違い = 00:07:03 ?

4

4 に答える 4

14

または ライブラリを使用Dateすることはまったく問題ありませんが (おそらく簡単です)、これを「手動で」行う方法の例を少し数学を使って示します。アイデアは次のとおりです。

  1. 文字列を解析し、時、分、秒を抽出します。
  2. 合計秒数を計算します。
  3. 両方の数を引きます。
  4. 秒を次のようにフォーマットしhh:mm:ssます。

例:

function toSeconds(time_str) {
    // Extract hours, minutes and seconds
    var parts = time_str.split(':');
    // compute  and return total seconds
    return parts[0] * 3600 + // an hour has 3600 seconds
           parts[1] * 60 +   // a minute has 60 seconds
           +parts[2];        // seconds
}

var difference = Math.abs(toSeconds(a) - toSeconds(b));

// compute hours, minutes and seconds
var result = [
    // an hour has 3600 seconds so we have to compute how often 3600 fits
    // into the total number of seconds
    Math.floor(difference / 3600), // HOURS
    // similar for minutes, but we have to "remove" the hours first;
    // this is easy with the modulus operator
    Math.floor((difference % 3600) / 60), // MINUTES
    // the remainder is the number of seconds
    difference % 60 // SECONDS
];

// formatting (0 padding and concatenation)
result = result.map(function(v) {
    return v < 10 ? '0' + v : v;
}).join(':');

デモ

于 2013-06-17T22:02:30.677 に答える
3

常に 12 時間未満である場合の非常に簡単な方法:

a = "10:22:57";
b = "10:30:00";
p = "1/1/1970 ";

difference = new Date(new Date(p+b) - new Date(p+a)).toUTCString().split(" ")[4];
alert( difference ); // shows: 00:07:03

12 時間以上フォーマットする必要がある場合は、レンダリングがより複雑になります。日付間の MS の数は、この数学を使用して正しくなります...

于 2013-06-17T21:48:48.207 に答える
0

Date オブジェクトを使用する必要があります: http://www.w3schools.com/jsref/jsref_obj_date.asp

次に比較してください: javascriptで日付の違いを計算する方法

于 2013-06-17T21:44:28.050 に答える