2010-06-25 5 views
1

나는이 같은 주제가 많이 있었지만 그 문제를 해결할 수 없다는 것을 알고 있습니다. 내 스크립트입니다 :쿠키가 포함 된 카운트 다운 타이머

window.onload = function(){ 
    // 200 seconds countdown 
    var countdown = 14400; 
    //current timestamp 
    var now = Date.parse(new Date()); 

    //ready should be stored in your cookie 
    if (!document.cookie) 
    { 
     document.cookie = Date.parse(new Date (now + countdown * 1000)); // * 1000 to get ms 
    } 

    //every 1000 ms 
    setInterval(function() 
    { 
     var diff = (document.cookie - Date.parse(new Date())); 

     if (diff > 0) 
     { 
      var message = diff/1000 + " seconds left"; 
     } 
     else 
     { 
      var message = "finished"; 
     } 

     document.body.innerHTML = message; 

    },1000); 
} 

내가 자신의 쿠키 값에 따라 얼마 왼쪽 사용자 시간을 알려줍니다 카운트 다운 타이머를 만들고 싶어. 지금까지 두 값의 차이를 계산할 수 있었지만 차이 타임 스탬프 (diff)에서 "dd/mm/yy hh : mm : ss"와 같은 형식을 만드는 방법을 모르겠습니다. 전혀 가능합니까?

답변

2

은 당신이 원하는 것은

5D 4 시간 3m 2 초

당신이 시간의 기간 동안 일의 큰 숫자를 가지고 괜찮다면>은 같은 것으로 (밀리) 초 차이로 변환하는 기능입니다 당신이 밀리 초 차이가있는 경우도 없애 Math.round을 사용할 수 있습니다

function human_time_difference(diff) { 
    var s = diff % 60; diff = Math.floor(diff/60); 
    var min = diff % 60; diff = Math.floor(diff/60); 
    var hr = diff % 24; diff = Math.floor(diff/24); 
    var days = diff; 

    return days + 'd ' + hr + 'h ' + min + 'm ' + s + 's'; 
} 

, 당신은 1000으로 나눈 그 번호를 통과해야합니다 : 몇 달, 당신은 같은 것을 사용할 수 있습니다 분수,하지만 당신도 그걸 남겨 둘 수 있습니다. 그 정보가 표시됩니다.

얻기 개월 년은 몇 가지 이유로 조금 까다 롭습니다 : 한달에 일

  1. 수는 다릅니다.
  2. 1 개월 중반에서 다음 월 중순으로 갈 때, 일수가 31보다 많아도 시간 범위는 전체 월을 커버하지 않습니다 (예 : 2 개월 6 월과 7 월 30 일 ??).

실제로 두 달 사이의 개월 수를 원할 경우 두 달 사이의 월 수를 원하는 경우 두 달 사이의 월 수를 지정하면 충분하지 않습니다. 시작 및 종료 날짜 + 시간을 전달해야하는 일정 관리 논리를 사용해야합니다.

추신 : 질문을 게시 할 때 관련없는 세부 사항을 피하십시오. 예를 들어, 귀하의 질문은 쿠키, setInterval 또는 onload 처리기와 관련이 없습니다. 당신이 모르는 유일한 부분은 일, 시간 등을 초 단위로 변환하는 방법입니다. 당신이 무언가를하려고하는 이유에 대해 약간의 배경 지식을 제공하는 것이 도움이 될 수 있습니다. 기본적인 질문은, 사람들이 필수적인 부분에 도달하기 전에 그것을 통해 웨이드하지 않아도되도록 끝에 넣어. 제목과 동일한 조언이 적용됩니다. 관련이없는 세부 정보 (예 : 쿠키 및 카운트 다운)를 제외하여 관련성이 있는지 확인하십시오.

+0

달콤한, 완벽하게 작동합니다! 감사! –

0

JavaScript에는 PHP를 완료 한 경우와 같이 날짜 형식 지정 방법이 내장되어 있지 않습니다. 대신 문자열을 직접 작성해야합니다. 그러나,이 목적에 유용하게 사용할 수있는 getter 메소드가 많이 있습니다. 10 ways to format time and date using JavaScript을 참조하십시오.

또한 알고 있습니다. Date.parse은 타임 스탬프의 밀리 초 부분을 반환하지 않습니다 (반올림합니다). 당신이 밀리 초를해야하는 경우에는 다음 중 하나를 수행 할 수

var d = new Date(); 
var timestamp_ms = Date.parse(d) + d.getMilliseconds(); 

하거나

var timestamp_ms = +d; 
-1
  1. 당신이 if (!document.cookie)하여 쿠키를 확인하지만 브라우저에서 작업을 doesnot 왜 이해가 안 돼요 그래서 나는 그것을 안으로 변경했다 if (document.cookie)

  2. toString 기능 및 다른보십시오. javascript Date 객체 참조에서 그들을 찾으십시오. 예를 들어,

     var t = new Date; 
        t.setTime(diff); 
        var message = t.toTimeString() + " seconds left"; 
    

내 브라우저에 11:59:58 seconds left를 인쇄 할 수 있습니다.

+0

차이가 => 일 경우 사용자의 방법이 작동하지 않습니다. – allyourcode

+0

글쎄, 나는 toString 함수와 다른 것을 사용해 보라고 말했다. "t.toString()"을 사용하면 날짜 차이와 시차가 모두 표시됩니다. – Cauly

+0

모르겠지만 toStringString이 "02:54:34 GMT + 0200 (FLE 표준시) 초 남음"을 제공합니다. –