2013-07-29 2 views
0

나는 현재 시간에서 미래의 설정 시간까지 카운트 다운 카운트 다운 타이머를 만들려고합니다. JS를 사용하여 완벽하게 작동하지만 클라이언트의 서버가 아닌 현재 시간을 사용해야합니다.에포크 서버 시간을 사용하는 자바 스크립트 카운트 다운 타이머

PHP를 사용하여 서버 에포크 시간을 얻으려고 시도한 다음 1 초마다 증가시키고 Javascript Date 객체로 변환하여 비교를 수행하고 남은 시간을 DOM에 기록합니다. 이것이 가능한지, 아니면 최선의 방법인지는 모르겠지만 현재로서는 서버에서 유효 날짜 또는 유효 날짜를 늘리거나 늘리지 않습니다.

<!DOCTYPE html> 
<?php 
$end_time = $_GET['time']; 
$server_epoch = $_SERVER['REQUEST_TIME']; 
?> 
<html> 
    <head> 
     <script type="text/javascript">    
      var counter = setInterval(function(){ 
       countdown(<?= $server_epoch ?>, "<?= $end_time?>"); 
       server_e++; 
      }, 1000); 



     /* 
     * Calculates the time remaining to the nearest second from the current time until the 
     * end time and updates DOM elements with id of "time" to display the formatted time(D,H,M,S) 
     */ 
     function countdown(server, end_time){ 
      var current_time = new Date(server); 
      var end = new Date(end_time); 
      var time_left = (end - current_time)/1000; 
      if(time_left <= 0){ 
       document.getElementById("time").innerHTML= "Auction has ended" ; 
      } else { 
       var days = Math.floor(time_left/86400); 
       var hours = Math.floor(((time_left/86400)-days) * 24); 
       var mins = Math.floor(((((time_left/86400)-days) * 24)-hours)* 60); 
       var secs = Math.floor(((((((time_left/86400)-days) * 24)-hours)* 60)-mins) * 60); 
       var day_string = " days, "; 
       if (days == 1){ 
        day_string = " day, "     
       }  
       document.getElementById("time").innerHTML= days + day_string + hours +" hours, " + mins +" mins, "+ secs+" secs" ; 
       document.getElementById("current").innerHTML= current_time ; 
       document.getElementById("ends").innerHTML= end ; 
      } 
     } 
     </script> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title></title> 
    </head> 
    <body> 
     <div id="time_box"> 
      <form method="get" action="index.php"> 
       <input type="text" name="time"/> 
       <input type="submit" value="submit"> 
      </form> 
      php time: <?= $server_epoch; ?><br/> 
      Current time: <div id="current"></div> <br/> 
      Ends: <div id="ends"></div><br/> 
      Time left: <div id="time"></div> 
     </div> 
    </body> 
</html> 
+0

시간 필드에서 보낸 값의 예를 전달할 수 있습니까? – hdvianna

+0

가능한 복제본 [자바 스크립트 카운트 다운을 서버 측 시간과 함께 사용] (http://stackoverflow.com/questions/6755940/using-javascript-countdown-with-server-side-time) – murgatroid99

답변

0

이렇게하는 것은 완전히 어색한 방법입니다. 이것은 내가 원하는 모든 것을 수행합니다. here

0

다른 곳에서는 server_e 변수를 선언 한 적이 있습니까? 이 변수가 증가하려는 변수 인 것처럼 보이지만 다른 곳에서는 사용되지 않습니다.

0

더 나은 방법은 http://www.datejs.com/을 사용하고 시간대를 설정하는 것입니다.

휠을 다시 만들고 setInterval을 사용하여 정확한 타이머를 사용하지 마십시오. 지금 당장 쉬게 될 것입니다.

관련 문제