2017-02-08 11 views
-1

私は以下のデータセットを持っています。私はそれが2分を与える第一2つのcreatedAt分野から、たとえば、各createdAt間の時間差を計算したいこのjavascriptの配列の各値の差を計算しますか?

のようなオブジェクトの配列
[{ 
    createdAt: Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time), 
    set: 'jr', 
},{ 
    createdAt: Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time), 
    or: 'd', 
},{ 
    createdAt: Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time), 
    or: 'd', 
},] 

を持っています。

+1

期待された結果をどのように見えるかを示してください。 – RomanPerekhrest

+0

数分または数秒のような数字だけです – DEO

+1

それぞれの違いを計算するのですか? 1と2 - 2と3 - 1と3の間? – Weedoze

答えて

1

まず、日付値は文字列でなければならないことに注意してください。次に、単純なforループを使用して配列を反復処理し、文字列をDateオブジェクトに変換し、現在の日付値を次の配列要素の値と比較します。そこから、日付間の分数を計算することができます。上記のロジックは昇順を命じされた日付に依存していること

var data = [{ 
 
    createdAt: 'Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time)', 
 
    set: 'jr' 
 
}, { 
 
    createdAt: 'Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time)', 
 
    or: 'd' 
 
}, { 
 
    createdAt: 'Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time)', 
 
    or: 'd' 
 
}] 
 

 
var differences = []; 
 
for (var i = 0; i < data.length - 1; i++) { 
 
    var diff = new Date(data[i + 1].createdAt) - new Date(data[i].createdAt); 
 
    var diffMins = new Date(diff).getMinutes(); 
 
    differences.push(diffMins); 
 
} 
 

 
console.log(differences);

注:これを試してみてください。

+0

それはうまく動作しますが、どのようにループ関数の外にすべての値を取得するのか教えてください。私は新しい配列は、あなたが私を導くことができる値をプッシュする必要があると思う – DEO

+0

あなたはそれを配列にプッシュすることができます - 私はあなたのための例を追加 –

+0

ありがとう私は2番目の部分を果たしている。私が直面している主な問題は、このような配列を両方とも追加したいということです。 '[{ createdAt: 'Wed Feb 08 2017 12:16:35 GMT + 0500(パキスタン標準時)'、 : 'jr ' }、{ createdAt: '水2017年2月8日12時18分36秒GMT + 0500(パキスタン標準時)' または 'D'、 differnce、2 }、{ createdAt:' 水2月8日2017 12:22:46 GMT + 0500(パキスタン標準時) '、 または:' d '、 differnce:4 }] ' – DEO

0
var a = new Date(arr[0].createdAt); 
var b = new Date(arr[1].createdAt); 
var diff; 

if(a > b) { 
    diff = a.getTime() - b.getTime(); 
} else { 
    diff = b.getTime() - a.getTime(); 
} 

diff = diff/1000; 

// now diff is in seconds 
// calculate minutes by dividing it by 60 
// use this in for loop 
0

日付をunixタイムスタンプ(秒単位)に変換します。以下の擬似コードのように算術演算で秒差を計算することができます。

var d1 = Date.parse('Wed Feb 08 2017 12:16:35 GMT+0500')/1000 //1486538195 
var d2 = Date.parse('Wed Feb 08 2017 12:18:35 GMT+0500')/1000 //1486538315 
var diff = Math.floor((d2 - d1)/60) + 'Min' + (d2-d1)%60 + 'Sec' 

同様に、それぞれの違いを取得することができます。

関連する問題