2011-11-02 4 views
9

C#/.NET 플랫폼에서 응용 프로그램을 보내는 뉴스 레터를 개발 중입니다. 최근에 maxmind.com 데이터베이스를 사용하여 그의 IP 주소로받는 사람의 국가 및 지역을 검색하는 모듈을 추가했습니다.국가 및 지역별 시간대 가져 오기

Country Code: DE 
Country Name: Germany 
Region Name: Hessen 
City:   Frankfurt Am Main 
Latitude:  50.1167 
Longitude: 8.6833 

내가 지금 필요한 것은이 정보를 사용하여 사용자의 시간대를 얻을 수 있습니다 :

예를 들어, 나는 몇 가지 예제 IP 주소에 대한 다음과 같은 정보를 얻을 수 있습니다.

시간대를 제공하는 일부 GeoIp 데이터베이스가 있지만이 구체적인 GeoIp 데이터베이스를 사용해야합니다. 또한 시간 오프셋을 결정하는 javascript의 방법은 여기에서 사용할 수 없습니다.

어떻게 든 국가 및 지역 이름을 사용하여 시간대를 얻을 수 있습니까?

+0

[위의 방법] (http://stackoverflow.com/a/16086964/634824) –

답변

9

마지막으로, 오랫동안 연구 한 후에, 나는 해결책을 발견했습니다 참조하십시오. 정확하지는 않지만 원격 서비스의 종속성은 필요하지 않습니다.

내가 maxmind의 데이터베이스 올슨 데이터베이스에서 지역과 시간대 간의 매핑 파일 (일명 TZ 데이터베이스)를 제공하는 것으로 나타났습니다 : http://www.maxmind.com/timezone.txt

두 번째 단계는 .NET 시간대에 올슨의 시간대로 변환되었다. 가장 적합한 솔루션은 여기에서 찾을 수 있습니다 : http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/ 그래서 조금 편집하고 .NET에서 읽으려면 CSV 파일로 변환했습니다.

희망이 있으면 도움이 될 것입니다. 당신이 maxmind의 API에서 DatabaseReader 개체를 사용하는 경우 속성 location.timeZone 당신이에 의해 반환되는 객체에서 검색 할 수 있습니다 이미 가지고에

+1

[자신의 질문에 답변해도 좋습니다] 답변을 수락하는 것을 잊지 마십시오. (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). –

2
+0

와 함께 위도/경도를 사용할 수 있습니다. 재미있는 서비스. 앞으로 수 백만 명의 수신자를 확보 할 수 있기 때문에 오프라인 기반 접근 방식을 찾고자합니다. 그러나이 솔루션은 내 상황에서 매우 유용합니다. – VirusX

+0

@VirusX - 수백만 건의 요청에 대해 이야기 할 경우 찾기가 어려울 것입니다 무료 서비스. 물론 Javascript는 무료 일 것입니다. 여러 가지 방법으로이 작업을 수행 할 수 있습니다. 예를 들어, javascript 페이지가있는 페이지에 대한 HTTP 요청을 사용자가 직접 제어 할 수 있습니다. –

+0

@Ramhound - 위에서 언급했듯이 자바 스크립트는 요청의 성격 상 사용할 수 없습니다. 비콘 url은'img' 태그의'src' 매개 변수에 포함되어 있습니다. 사용자가 이메일 메시지를 열면 요청이 Google 서비스로 전송됩니다. 우리가 가지고있는 것은 http 헤더와받는 사람의 IP 주소뿐입니다. 수백만에 대해서 - 일반적으로 분당 또는 시간당 수백만 건의 요청을 의미하지는 않지만 초 당 요청 수가 많지는 않습니다. 그래서, 내가 말했듯이, 나는 오프라인 데이터베이스를 찾기 위해 노력하고있다. – VirusX

1

그것은 ..

을이 질문에 질문을 받았다 이후 오랜만이야,하지만 다른 사람을 도움이 될 수 있습니다 GeoIP 클래스, maxmind에서 API docs을 확인하십시오.

+0

그래, 2011 년에 GeoIP2가 존재하지 않았습니다. 이제는 간단한 API가 있습니다. – VirusX

관련 문제