2011-03-05 7 views
12

안녕하세요, 웹 응용 프로그램을 만드는 중입니다. 사용자 등록을하면 만든 날짜가 표시됩니다.사용자의 시간대를 자동으로 감지하는 방법은 무엇입니까?

우리는 현재 SQL 타임 테이블을 사용하고 있습니다. 서버 시간을 보여줍니다. 그러나 사용자 시간대에 따라 시간을 변환하는 방법을 알지 못합니다.

우리는 이 아니기 때문에입니다.

도움에 어떤 날은 그것을 사전에 :)에서

감사를 해결하기 위해 할 수있는

+0

그럼, 어떻게 당신이 * *을 수정 하시겠습니까? 가장 신뢰할 수있는 옵션은 사용자에게 시간대를 묻는 것일 수도 있습니다 –

+0

자동으로 시간대를 감지하는 것과 같은 다른 옵션이 있습니다 –

+0

이 질문보기 : [JavaScript 또는 PHP를 사용하여 사용자의 현재 현지 시간 자동 감지] (http://stackoverflow.com/ 질문/863474/automatic-detect-users-current-local-time-with-javascript-or-php) –

답변

23

http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

데모이 선택 상자에서 시간대를 표시해야합니다 자바 스크립트 솔루션을 사용합니다.

http://onlineaspect.com/examples/timezone/index.html (죽은 링크) 작은 "부정 행위"로

+1

필자는 https://bitbucket.org/pellepim/jstimezonedetect로 연결되는 많은 링크를 따라갔습니다. 링크보다 훨씬 강력한 솔루션 인 것처럼 보이지만, 필자는 일광 절약 시간에 몰랐습니다. –

8

당신은 서버 측에서 사용자의 시간대를 얻을 수 없다, 당신은 클라이언트에서만 그것을 추측을 할 수 있습니다 측면.

사용자의 IP 주소를 사용하는 경우 위치 정보를 수집하고 시간을 추측 할 수 있습니다.

보통 이렇게하는 방법은 사용자에게 (예를 들어 등록 할 때) 시간대를 묻고 시간 계산에 사용하는 것입니다.

+8

이렇게하면 봇이 첫 번째 또는 두 번째 옵션을 선택하기 때문에 두 가지 가짜 시간대를 포함시켜 스팸봇을 잡을 수 있습니다. 드롭 다운 목록의 마지막 항목 – JustinStolle

+0

사용자가 보내는 모든 요청에서 현재 시간을 웹 페이지에 제출할 수 있습니다 (자바 스크립트 사용). 그런 다음 php에서 요청한 시간과 php가 믿는 시간을 비교하여 오프셋을 계산할 수 있습니다. –

+0

나는 시간대 등록을 선호한다. 요즘에는 사람들이 자주 여행하며 때로는 현재 IP 또는 브라우저의 시간대가 아닌 국가 시간대의 이벤트를 알고 싶어합니다. 즉, 브라우저에서 Date() 객체도 조심해야합니다. 예기치 않은 문자열 일 때 자동으로 브라우저의 시간대로 이동하기 때문입니다. – JustAMartin

1

가장 신뢰할 수있는 방법은 사용자에게 자신의 시간대를 설정하도록 요청하는 것입니다. 내 생각에 사용자 계정이 자신의 데이터베이스에서 만들어져 자신의 사용을위한 타임 스탬프를 갖는 것이 좋습니다.

이 내가 사용자의 시간대가하는 데 걸리는 단계는 다음과 같습니다

1- 실제 사용자 표준 시간대에 대한 새 열을 추가 당신이 당신의 자신의 사용
2에 대해 가지고있는 타임 스탬프 열을 보존은
3
new Date().getTimezoneOffset()/60;<br/>
4- 또한 사용자뿐만 아니라 또한 한 단계 더 걸릴하고 사용자의 시간대를 감지 할 수있는 지리적 위치 서비스를 사용할 수 있습니다

거기에 자신의 시간대를 설정할 수 있습니다 : - 시간대를 검색하기 위해 자바 스크립트를 사용합니다.

+5

누구든지 facezone이 사용자 시간대를 얻지 않고 시간대를 어떻게 변환하는지 말할 수 있습니까? –

4

geolocation의 경우 http://ipinfodb.com/을 사용할 수 있으며 API와 잘 작동합니다.

function GeoLocation($precision='city',$ip,$api) { 

    if($precision == "country") { 
     $file = "ip_query_country.php"; 
    } 
    else { 
     $file = "ip_query.php"; 
    } 

    $params = @file_get_contents("http://api.ipinfodb.com/v2/ip_query.php?key=".$api."&ip=".$ip."&timezone=true"); 
    $fields = @new SimpleXMLElement($params); 
    foreach($fields as $field => $val) { 
     $result[(string)$field] = (string)$val; 
    } 
    return $result; 
} 
+7

이렇게하기로 결정했다면 사용자가 쉽게 오버라이드하도록하십시오. 직장에서 나는 영국에 있지만 우리의 인터넷 접속은 뉴욕을 통해 연결되어 있고, 내가 어디에 있는지를 잘못 추론하고 그것을 고칠 방법이없는 꽤 많은 웹 사이트가 있습니다. – jcoder

2

(클라이언트 측 스크립트를 사용하여) 및 서버에 대한 결과를 게시, 당신은 당신의 클라이언트의 시간대에 액세스 할 수 있습니다.

는 예를 들어, 당신은이 자바 스크립트 라이브러리를 사용할 수 있습니다 :

https://bitbucket.org/pellepim/jstimezonedetect

var tz = jstz.determine(); // Determines the time zone of the browser client 
tz.name(); // Returns the name of the time zone eg "Europe/Berlin" 

데모 : http://pellepim.bitbucket.org/jstz/

+0

데모 링크가 깨졌습니다. –

관련 문제