2014-10-30 3 views
0

날짜와 시간의 차이를 만드는 함수를 만들었습니다. 실제로 정확한 전기 일을 현재 시간과 전기 일의 차이로 표시하고 싶습니다. 내 결과가 완전히 잘못되었습니다. 아래는 내 기능입니다. '517449600'=> 1986 년 5 월 26 일. 내 결과는 페이지를 새로 고침하면 7 시가되어 8 시가됩니다. 불가능!잘못된 날짜가있는 두 날짜 간의 차이점

var difference = (Date.now() - 517449600) * 1000; 
     var date = new Date(difference); 
     var hours = date.getHours(); 
     var minutes = date.getMinutes(); 
     var days = Math.floor(hours/24); 

     var postDate = (days == 0) ? ((hours == 0) ? minutes+' min' : hours+ ' h') : days+ ' day'; 
     //console.log(postDate); 
+0

이미이 게시물을 본 나의 경우에는 작동하지 않습니다 http://momentjs.com/ – lloiser

+0

을 시도 –

답변

0

코드가 작동하지 않는 이유는 날짜를 2 개의 시간 소인의 시간 소인으로 설정하려고하기 때문입니다. 나는 그것이 당신이 찾고있는 솔루션입니다 희망 http://jsfiddle.net/oo1hh3n2/

var then = 517449600; 
var diff = Math.round((new Date().getTime() - (then * 1000))/1000); 

var s = 1, 
    m = s * 60, 
    h = m * 60, 
    d = h * 24, 
    w = d * 7, 
    y = w * 52; 

var years = Math.floor(diff/y); 
var weeks = Math.floor(diff/w); 
var days = Math.floor(diff/d); 
var hours = Math.floor(diff/h); 
var minutes = Math.floor(diff/m); 

var time = []; 

if (years > 0) { 
    time.push(years + 'y'); 
} 

if (weeks > 0) { 
    var week = weeks - (years * 52); 
    if (week > 0) { 
     time.push(week + 'w'); 
    } 
} 

if (days > 0) { 
    var day = days - (weeks * 7); 
    if (day > 0) { 
     time.push(day + 'd'); 
    } 
} 

if (hours > 0) { 
    var hour = hours - (days * 24); 
    if (hour > 0) { 
     time.push(hour + 'h'); 
    } 
} 

if (minutes > 0) { 
    var minute = minutes - (hours * 60); 
    if (minute > 0) { 
     time.push(minute + 'm'); 
    } 
} 

if (diff > 0) { 
    var second = diff - (minutes * 60); 
    if (second > 0) { 
     time.push(second + 's'); 
    } 
} 

console.log(time.join(' ')); 

: 당신이해야 할 것은 두 날짜 (타임 스탬프)의 차이를 얻을 초 차이를 계산입니까?

사이드 노트 : JavaScripts 날짜가 로직에 가장 적합하지 않습니다.

var d = new Date('2014-01-31'); // Fri Jan 31 2014 00:00:00 GMT+0000 (GMT Standard Time) 
d.setMonth('+1'); // Mon Mar 03 2014 00:00:00 GMT+0000 (GMT Standard Time)