'Do', or 'do not'.
There is no 'try'.


Since 2008.05.01

본문

Hobby?

Javascript로 추가 통신 없이 서버시간 구하기

2016.02.17 13:27

제목이 Javascript로 서버시간 구하기긴 하지만, php도 사용이되긴 한다.


단, 서버로 정보를 보내고, 이를 다시 받아 처리하는 방식은 아니다.


이론은 아래와 같다.


1. php 코드는 서버에서 처리 후 client로 보내진다.

2. javascript 코드는 client에서 처리된다.

3. 이를 이용해 서버에서 구해진 시각과 Javascript에서 구해진 시각의 차이를 계산하여 이용한다.


이렇게 하면 작은 오차 범위 내로 서버의 시각을 실시간으로 구할 수 있다.


구현 코드는 아래와 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
    var server_time = new Date('<? print date("Y-m-d H:i:s", time())?>');
    /* php 코드를 이용해 서버의 시간 정보를 받아 javascript의 시간 형태로 변환 */
    var client_time = new Date();
    /* 클라이언트의 시간 정보 생성 */
    var time_diff = server_time.getTime() - client_time.getTime();
    /* 서버와 클라이언트간의 시간차 계산 */
 
    function get_server_time()
    {
        var now_client_time = new Date();
        /* 호출될 때의 클라이언트 시간 정보 생성 */
        var now_server_time = new Date(now_client_time.getTime() + time_diff);
        /* 호출된 시간 정보와 서버간 시간차를 이용해 서버 시간 생성 */
 
        alert(now_server_time);
        /* 서버 시간 출력 */
    }
</script>
cs
저작자 표시 비영리 변경 금지
신고

'Hobby?' 카테고리의 다른 글

[C언어] 다중 배열 동적할당  (0) 2017.10.10
Javascript로 추가 통신 없이 서버시간 구하기  (8) 2016.02.17

태그

댓글 8

  • 행인
    2016.08.09 02:48 신고

    안되는뎁쇼..

    • 2016.08.10 20:16 신고

      해당 코드에 php 코드가 있어서, php 코드를 지원하지 않는다면 작동하지 않습니다.

      즉, 네이버 웹에디터나 각종 커뮤니티 상의 편집기에 있는 html모드에서는 php 코드를 지원하지 않기때문에 작동하지 않습니다.

  • 행인
    2016.08.10 23:54 신고

    php실행 되는 환경입니다 ㅎㅎ
    get_server_time()을 setInterval로 돌렸는데 alert창이 안뜹니다.

  • 행인
    2016.08.11 00:35 신고

    var server_time = new Date('<?php print date("Y-m-d H:i:s", time()) ?>');
    이줄을 넣으면
    함수가 실행이 안됩니다.ㅋㅋ
    alert('test'); 로 띄워봐도 저것만 넣으면 실행이 안되네요 ㅋㅋ

    다시언급하지만 php 파일안에서 <script> 쓰고있습니다.!

    • 2016.08.11 01:22 신고

      해당 라인에 php 코드 대신
      '2016-08-11 01:19:13'와 같은 시간을 강제로 지정 후 테스트해보시고, 만약 작동된다면 코드 내 php코드인 <?php ~~~ ?> 부분의 미작동 등의 이유로 구현이 되지 않는 것으로 보입니다.

  • 행인
    2016.08.11 00:42 신고

    alert()창에 Invalid Date라고 뜨네요!

    • 2016.08.11 01:28 신고

      http://www.w3schools.com/js/tryit.asp?filename=tryjs_date_gettime
      에서 본문의 코드로 테스트 해본 바로는 해당 문제 구문인 Date('<?php print date("Y-m-d H:i:s", time()) ?>')의 내용인 <?php ~~~~ ?>부분이 php코드로 작동하지 않고, text로 처리된 것으로 보입니다.

      즉, 서버에서 해당 문서내의 php코드를 처리하지 않는 것으로 보입니다.

    • 2016.08.11 01:34 신고

      해당 php코드가 정상 작동하는지 확인하시려면 아래와 같은 코드를 이용해 보시길 바랍니다.

      alert('<?php print date("Y-m-d H:i:s", time()) ?>');

      이때 시각 정보가 출력되면 php코드가 작동하는 것이지만 내용이 그대로 나올 경우 php코드가 작동하지 않는 상황입니다.

댓글 열기

페이징

1 ··· 3 4 5 6 7 8 9 ··· 400

티스토리 툴바