복붙노트

사용자 시간대 가져 오기 [중복]

PHP

사용자 시간대 가져 오기 [중복]

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? PHP 또는 javascript.Can 누군가가 일부 발췌 문장을 제공 할 수 있습니까? 감사.

해결법

  1. ==============================

    1.이렇게하면 PHP 변수로 시간대가 표시됩니다. jQuery와 PHP를 사용하여 함수를 작성했습니다. 이 테스트를 거쳐 작동합니다!

    이렇게하면 PHP 변수로 시간대가 표시됩니다. jQuery와 PHP를 사용하여 함수를 작성했습니다. 이 테스트를 거쳐 작동합니다!

    시간대를 변수로 사용하려는 PHP 페이지에서 다음 코드 스 니펫을 페이지 상단 근처에 놓습니다.

    <?php    
        session_start();
        $timezone = $_SESSION['time'];
    ?>
    

    이것은 세션 변수 "time"을 읽습니다. 우리는 지금 만들려고합니다.

    동일한 페이지의 섹션에서 우선 jQuery를 포함해야합니다.

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    

    또한 섹션에서이 jQuery를 붙여 넣습니다.

    <script type="text/javascript">
        $(document).ready(function() {
            if("<?php echo $timezone; ?>".length==0){
                var visitortime = new Date();
                var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
                $.ajax({
                    type: "GET",
                    url: "http://domain.com/timezone.php",
                    data: 'time='+ visitortimezone,
                    success: function(){
                        location.reload();
                    }
                });
            }
        });
    </script>
    

    너는 눈치 챘을 수도 모르지만, 너는 너의 실제 도메인으로 URL을 바꿀 필요가있다.

    마지막 한가지. 당신은 아마 도대체 timezone.php가 무엇인지 궁금 할 것입니다. 음, 간단히 말해서 : (timezone.php라는 새로운 파일을 만들고 위의 URL로 가리 키십시오)

    <?php
        session_start();
        $_SESSION['time'] = $_GET['time'];
    ?>
    

    올바르게 작동하면 먼저 페이지를로드하고 JavaScript를 실행 한 다음 페이지를 다시로드합니다. 그러면 $ timezone 변수를 읽고 즐겁게 사용할 수 있습니다! 현재 UTC / GMT 시간대 오프셋 (GMT -7) 또는 현재 시간대를 반환합니다.

    이 블로그에 대한 자세한 내용은 내 블로그에서 읽을 수 있습니다.

    건배

  2. ==============================

    2.서버 측에서는 JavaScript만큼 정확한 것은 아닙니다. 한편 때로는 그러한 과제를 해결해야합니다. 이 경우 가능한 해결책을 공유하기 위해이 답변을 씁니다.

    서버 측에서는 JavaScript만큼 정확한 것은 아닙니다. 한편 때로는 그러한 과제를 해결해야합니다. 이 경우 가능한 해결책을 공유하기 위해이 답변을 씁니다.

    사용자의 시간대를 결정해야 할 경우 Geo-IP 서비스를 통해 수행 할 수 있습니다. 그들 중 일부는 시간대를 제공합니다. 예를 들어,이 파일 (http://smart-ip.net/geoip-api)은 다음과 같은 도움을 줄 수 있습니다.

    <?php
    $ip     = $_SERVER['REMOTE_ADDR']; // means we got user's IP address 
    $json   = file_get_contents( 'http://smart-ip.net/geoip-json/' . $ip); // this one service we gonna use to obtain timezone by IP
    // maybe it's good to add some checks (if/else you've got an answer and if json could be decoded, etc.)
    $ipData = json_decode( $json, true);
    
    if ($ipData['timezone']) {
        $tz = new DateTimeZone( $ipData['timezone']);
        $now = new DateTime( 'now', $tz); // DateTime object corellated to user's timezone
    } else {
       // we can't determine a timezone - do something else...
    }
    
  3. ==============================

    3.Oded가 대답 한 것처럼. 자바 스크립트에서 이러한 종류의 탐지 기능이 필요합니다.

    Oded가 대답 한 것처럼. 자바 스크립트에서 이러한 종류의 탐지 기능이 필요합니다.

    나는 이것으로 자신과 싸우고 오프셋이 충분하지 않다는 것을 깨달았다. 예를 들어 일광 절약 시간에 대한 정보는 제공하지 않습니다. 나는 zoneinfo 데이터베이스 키에 맵핑 할 코드를 작성했다.

    1 년에 여러 날짜를 확인하면 더 정확하게 시간대를 결정할 수 있습니다.

    여기에 스크립트를보십시오 : http://jsfiddle.net/pellepim/CsNcf/

    시스템 시간대를 변경하고 실행을 클릭하여 테스트하십시오. 크롬을 실행하는 경우 새 탭에서 각 테스트를 수행해야합니다 (시간대 변경을 시작하기 위해 다시 시작해야 함).

    코드 체크 아웃에 대한 자세한 내용은 https://bitbucket.org/pellepim/jstimezonedetect/에서 확인하십시오.

  4. from https://stackoverflow.com/questions/4746249/get-user-timezone by cc-by-sa and MIT license