2015-01-03 1 views
1

나는 GMT 시간을 PHP로 얻었고 시계처럼 카운트하고 싶습니다.자바 스크립트 시계?

<?php $time = gmdate('H:i:s'); ?> 

<script>var time = <?php echo($time) ?>; 
    setInterval(function() { 
     time += 1; 
     $("#timediv").text("Current time (GMT): " + time); 
     //somehow convert it to 11:44:31 AM ?? 
    }, 1000); 
</script> 

나를 도와 줄 수 있습니까?

+2

를 사용하여 클라이언트의 시계. 그렇지 않으면 표류 할 것입니다. 업데이트 될 때마다 클라이언트에서 현재 시간을 가져옵니다. http://stackoverflow.com/questions/10211145/getting-current-date-and-time-in-javascript –

답변

-1

교체 나는 motanelu의 답변을 따라야하지만,이으로 변경하지 않을

<?php $time = gmdate('h:i:s A'); ?> 
+0

왜? 당신의 대답을 설명하십시오. –

+0

설명서 읽기 ... – motanelu

+0

24 시간 표시에서 12 시간 표시로 변경되었습니다. 왜 그게 좋은 생각인데? –

0

<?php $time = gmdate('H:i:s'); ?> 

: 이것은 당신이 포맷 할 수있는 Date 객체를 만들고

<script>var time = Date.parse('<?php echo($time) ?>'); 
    setInterval(function() { 
     time.setSeconds(time.getSeconds() + 1); 
     $("#timediv").text("Current time (GMT): " + time); 
     //somehow convert it to 11:44:31 AM ?? 
    }, 1000); 
</script> 

예 : time.toLocaleTimeString();

+0

이것은 서버의 것이 아니라 클라이언트의 날짜를 사용합니다! – motanelu

+1

고객의 날짜를 어떻게 사용합니까? 내가 PHP 스크립트에서 Date() 채 웁니다 통지 :) – Richard87

5

우선, 시간을 표시하기위한 setTimeout/setInterval 정확도에 의존하는 것은 좋은 생각이 아닙니다. CPU 속도가 느린 것과 같이 정확하지 않은 이유는 여러 가지입니다. 그래서 실제 시계를 사용하는 Date 객체를 사용해야합니다.

<!-- jQuery --> 
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> 

<!-- dateFormat plugin for nice and easy time formatting --> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-dateFormat/1.0/jquery.dateFormat.min.js"></script> 

<script> 
    var clientTime = (new Date()).getTime(), 
     serverTime = <?php echo time() ?> * 1000, 
     difference = clientTime - serverTime; 

    setInterval(function() { 
     var now = new Date(); 

     now.setTime(now.getTime() - difference); 

     $("#timediv").text("Current time (GMT): " + $.format.date(now, "hh:mm:ss a")); 
    }, 1000); 
</script> 

배후 핵심 개념은 서버의 시간과 클라이언트 시간의 차이을 계산하는 것입니다

이 내가 클라이언트 측에서 내 서버의 시간을 사용하고자 할 때 내가 할 것입니다. 그런 다음 차이를 가지고 클라이언트 측 (매번 new Date()으로 생성)을 표준화합니다. 우리는 여전히 setInterval을 사용하고 있습니다. 그러나 어떤 이유로 지연되거나 가속 되더라도 표시된 시간은 여전히 ​​정확합니다.

+1

내 모든 예. 내가 바꿀 유일한 일은 1000 대신에 100-250과 같이'setInterval'을 더 빈번히 사용하는 것입니다.이 이유는 그것이 완전히 정확하지 않기 때문에 두 시계를보기 위해 제 첫 시계에 많은 신경을 썼습니다 초), –

+0

하지만 GMT (영국 시간)가 아니라 내 시간을 되돌려줍니다 : ( –

-1

는 내가 만든 너희들을 감사합니다

PHP :

$time = gmdate('H:i:s'); 
$time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $time); 
sscanf($time, "%d:%d:%d", $hours, $minutes, $seconds); 
$timeInSeconds = $hours * 3600 + $minutes * 60 + $seconds; 

자바 스크립트 :

<script> 
    function fromSeconds(sec){ 
     var d=new Date(0,0,0); 
     d.setSeconds(+sec); 
     return (d.getHours() ? d.getHours()+":" : "")+d.getMinutes()+":"+d.getSeconds(); 
    } 

    var time = <?php echo($timeInSeconds) ?>; 
    var newTime = 0; 
    setInterval(function() { 
     time += 1; 
     var newTime = fromSeconds(time); 
     $("#timediv").text("The current GMT time is: " + newTime); 
    }, 1000);'); 
    ?> 
</script> 
+0

이것은 나쁘지만 코드를 알아 차리지 못할 것입니다. 밀리 초는 * 정확히 * 그 시간에 실행된다는 것을 의미하지는 않습니다 * 일반적으로 틱마다 +/- 8 밀리 초의 부정확도가 있습니다. 수행 방법에 대한 Robo Robok의 답변을 참조하십시오 –

+0

왜 단지 downvote 대신 가장 좋은 답변을 upvoting? 다른 사람들이 (질문에 따라) * 틀린 것이 아닌 한? – Richard87