2014-02-05 1 views
1

현재 NodaTime을 사용하여 국가에서 시간대를 가져 오지만 문제는 국가에 여러 시간대가있는 경우입니다. 해당 시간대의 도시 목록을 어떻게 알 수 있습니까? 이 두 데이터 간의 매핑을 알아야합니다. NodaTime이 가능합니까? 다음과 같이NodaTime에서 도시와 시간대의 관계를 어떻게 알 수 있습니까?

+0

나는 영상을 통해 NodaTime 해당 시간대 식별자를 전달할 수 있습니다. 예를 보려면 http://msdn.microsoft.com/en-us/magazine/jj991981.aspx를보고 America/Vancouver를 검색하십시오. –

+2

귀하의 질문에 많은 의미가 없습니다. Noda Time은 "America/Los_Angeles"의 IANA (tzdb) 영역이나 "Pacific Standard Time"(bcl) 영역의 Windows (bcl) 영역과 같은 표준 시간대 식별자에 대해서만 국가의 표준 시간대를 가져올 수 없습니다. ". 국가별로 사용 ​​가능한 지역 목록을 필터링 할 수 있습니다. 그게 당신이하려는 일입니까? 그렇다면 내가 작성한 기능 [이 대답] (http://stackoverflow.com/a/17098904/634824)을 참조하십시오. –

+0

@MattJohnson 최근에 답장을 드려 죄송합니다. 실제로 TzdbDateTimeZoneSource.Default.ZoneLocations를 반복하여 국가를 매핑 한 다음 TzdbDateTimeZoneSource.Default.WindowsMapping.MapZones에 TzdbDateTimeZoneSource.Default.ZoneLocations (i) .ZoneId가 있는지 확인하여 매핑하여 시간대를 가져옵니다. 그러나 현재의 문제는 출발 도시와 도착 도시의 시간대를 찾고 싶습니다. 그래서 내가 어느 도시가 어느 시간대에 있는지 추적 할 수있는 방법을 알고 싶습니다. – user702160

답변

2

이 처리하는 올바른 방법은 다음과 같습니다 각 위치에 대한

  • 찾기 위도와 경도. 공항에있는 경우 OurAirports.com의 데이터를 사용해보십시오. 또한 OpenFlights에 관심이있을 수 있지만 어쨌든 OurAirports.com에서 데이터를 가져와야한다는 점에 유의하십시오. OpenFlights 데이터에는 일부 시간대 정보가 있지만 실제 IANA 시간대 식별자에 매핑하기에는 정확하지 않습니다.

  • 위도와 경도가 확인되면 one of these methods을 사용하여 위치에서 시간대를 검색 할 수 있습니다. 그것이 가능할 것이다 기대할 수 있도록

  • 그런 다음 당신은 노다는 미국에서 시간을 지원 DateTimeZoneProviders.Tzdb[theTimeZoneId]

+0

사이드 노트로 휴대용 라이브러리 클래스로 단일 DLL에서 시간대 조회에 위도/경도를 수행하는 [GeoTimeZone] (https://github.com/mj1856/GeoTimeZone)이라는 라이브러리에 현재 작업 중입니다. 그것은 소비를위한 준비가되지는 않았지만 사용할 수있는 경우라면 lat/lon의 시간대 조회를 위해 Noda Time과 쌍을 이루는 것이 이상적인 선택 일 것입니다. 아마도 그것이 완료되면 나는 공항 데이터를 포함하는 동반자 도서관을 만들 것입니다. –

+0

그냥 업데이트 - [GeoTimeZone] (https://github.com/mj1856/GeoTimeZone)이 지금이 용도로 사용하기에 충분합니다. –

+0

개념 및 출력의 증명은 [여기] (https://gist.github.com/mj1856/6d219c48697c550c2476)입니다. –

관련 문제