우선, 시간을 표시하기위한 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을 사용하고 있습니다. 그러나 어떤 이유로 지연되거나 가속 되더라도 표시된 시간은 여전히 정확합니다.
를 사용하여 클라이언트의 시계. 그렇지 않으면 표류 할 것입니다. 업데이트 될 때마다 클라이언트에서 현재 시간을 가져옵니다. http://stackoverflow.com/questions/10211145/getting-current-date-and-time-in-javascript –