2016-12-02 14 views
0

私は、各行におけるこれら二つのタグ間の時間をカウントし、すべての時間差の合計を表示したいカウント継続時間

%snd: <00:00:00><00:02:20> 
%snd: <00:02:45><00:05:18> 
%snd: <00:05:49><00:09:84> 

以下のような文字列を持っています適切なjavascriptの時間オブジェクトに変換する必要がありますか、それとも私がそれを行うことができる他の直接的な方法はありますか?あなたの形式は、その機能に<>タグ内の文字列を渡す<minutes:seconds:milliseconds>である場合

任意のヘルプやヒントは非常にappreciated.Thankあなた

+1

あなた必要がありますか?それはあなたの呼び出しです。あなたはおそらく比較的簡単に数学を行うことができますし、Dateオブジェクトでそれを処理させることもできます。 –

+0

秒、分、時(?)の違いを別々に見つけ、* 60などで追加することができます。 – qxz

+1

はい - 日付オブジェクトに変換してその違いを取得します。手動で行うよりもずっと簡単です。 – Archer

答えて

0

だろう、それはあなたが適用できるminutes.Thenにあなたの時間を与えるだろう、あなたのさらなる論理。

function timeToMinutes(time) { 
    time = time.split(/:/); 
    return time[0] + (time[1]/60) + time[2]/(60*100); 
} 
+0

このコードは正しく動作しません。 'time [0] * 3600 + time [1] * 60 ++ time [2]'を返して秒を返します。 – RobG

0

日付を避ける方が簡単だと思います。共通の分母、例えば秒に時間を変換するには、数秒間何回でも必要な数学演算を行い、最後に時間を変換します。

/* Convert a string in h:mm:ss format to seconds 
 
** @param {string} s - string in hh:mm:ss format 
 
** @returns {number} - time converted to seconds 
 
*/ 
 
function parseTime(s) { 
 
    var b = s.split(/\D/); 
 
    return b[0]*3600 + b[1]*60 + +b[2]; 
 
} 
 

 
/* Convert a time in seconds to hh:mm:ss format 
 
** @param {number} secs - seconds to convert 
 
** @returns {string} - time in hh:mm:ss format 
 
*/ 
 
function secondsToTime(secs) { 
 
    function z(n){return (n<10?'0':'')+n} 
 
    var sign = secs < 0? '-' : ''; 
 
    secs = Math.abs(secs); 
 
    return sign + z(secs/3600 | 0) + ':' + 
 
     z(secs % 3600/60 | 0) + ':' + 
 
     z(secs % 60); 
 
} 
 

 
// Get time difference between 00:02:45 and 00:05:18 
 
var diffInSeconds = parseTime('00:05:18') - parseTime('00:02:45'); 
 
console.log(secondsToTime(diffInSeconds)) 
 

 
// Deal with -ve difference between 00:05:18 and 00:02:45 
 
var diffInSeconds = parseTime('00:02:45') - parseTime('00:05:18'); 
 
console.log(secondsToTime(diffInSeconds)) 
 

 
// Process a time pair (noting that 84 is likely an invalid value but is allowed) 
 
var diff = '<00:05:49><00:09:84>'.match(/\d\d:\d\d:\d\d/g).reduce((a,b)=>secondsToTime(parseTime(b) - parseTime(a))); 
 
console.log(diff);

関連する問題