2017-02-08 1 views
-1

다음 데이터 세트가 있습니다. 나는 그것을 '2 분 줄 것이다 1 개의 createdAt 분야의 예를 들어 각 createdAt 사이의 시간 차이를 계산하려면이자바 스크립트에서 배열의 각 값의 차이를 계산 하시겠습니까?

[{ 
    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

덕분에 나는 두 번째 부분을 완성했다. 내가 직면하고있는 주요 문제는이 두 배열을 모두 추가하고자하는 것이다. '[{ createdAt : 'Wed Feb 08 2017 12:16:35 GMT + 0500 (파키스탄 표준시)', : 'jr ' }, { createdAt :'수요일 2017년 2월 8일 12시 18분 36초 (그리니치 표준시) + 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

날짜를 유닉스 시간 스탬프 (초)로 변환합니다. 다음의 의사 코드와 같은 산술 연산을 통해 초 차이를 계산할 수 있습니다.

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' 

마찬가지로 각 차이를 반복 할 수 있습니다.

관련 문제