현재 NodaTime을 사용하여 국가에서 시간대를 가져 오지만 문제는 국가에 여러 시간대가있는 경우입니다. 해당 시간대의 도시 목록을 어떻게 알 수 있습니까? 이 두 데이터 간의 매핑을 알아야합니다. NodaTime이 가능합니까? 다음과 같이NodaTime에서 도시와 시간대의 관계를 어떻게 알 수 있습니까?
답변
이 처리하는 올바른 방법은 다음과 같습니다 각 위치에 대한
찾기 위도와 경도. 공항에있는 경우 OurAirports.com의 데이터를 사용해보십시오. 또한 OpenFlights에 관심이있을 수 있지만 어쨌든 OurAirports.com에서 데이터를 가져와야한다는 점에 유의하십시오. OpenFlights 데이터에는 일부 시간대 정보가 있지만 실제 IANA 시간대 식별자에 매핑하기에는 정확하지 않습니다.
위도와 경도가 확인되면 one of these methods을 사용하여 위치에서 시간대를 검색 할 수 있습니다. 그것이 가능할 것이다 기대할 수 있도록
- 그런 다음 당신은 노다는 미국에서 시간을 지원
DateTimeZoneProviders.Tzdb[theTimeZoneId]
사이드 노트로 휴대용 라이브러리 클래스로 단일 DLL에서 시간대 조회에 위도/경도를 수행하는 [GeoTimeZone] (https://github.com/mj1856/GeoTimeZone)이라는 라이브러리에 현재 작업 중입니다. 그것은 소비를위한 준비가되지는 않았지만 사용할 수있는 경우라면 lat/lon의 시간대 조회를 위해 Noda Time과 쌍을 이루는 것이 이상적인 선택 일 것입니다. 아마도 그것이 완료되면 나는 공항 데이터를 포함하는 동반자 도서관을 만들 것입니다. –
그냥 업데이트 - [GeoTimeZone] (https://github.com/mj1856/GeoTimeZone)이 지금이 용도로 사용하기에 충분합니다. –
개념 및 출력의 증명은 [여기] (https://gist.github.com/mj1856/6d219c48697c550c2476)입니다. –
나는 영상을 통해 NodaTime 해당 시간대 식별자를 전달할 수 있습니다. 예를 보려면 http://msdn.microsoft.com/en-us/magazine/jj991981.aspx를보고 America/Vancouver를 검색하십시오. –
귀하의 질문에 많은 의미가 없습니다. Noda Time은 "America/Los_Angeles"의 IANA (tzdb) 영역이나 "Pacific Standard Time"(bcl) 영역의 Windows (bcl) 영역과 같은 표준 시간대 식별자에 대해서만 국가의 표준 시간대를 가져올 수 없습니다. ". 국가별로 사용 가능한 지역 목록을 필터링 할 수 있습니다. 그게 당신이하려는 일입니까? 그렇다면 내가 작성한 기능 [이 대답] (http://stackoverflow.com/a/17098904/634824)을 참조하십시오. –
@MattJohnson 최근에 답장을 드려 죄송합니다. 실제로 TzdbDateTimeZoneSource.Default.ZoneLocations를 반복하여 국가를 매핑 한 다음 TzdbDateTimeZoneSource.Default.WindowsMapping.MapZones에 TzdbDateTimeZoneSource.Default.ZoneLocations (i) .ZoneId가 있는지 확인하여 매핑하여 시간대를 가져옵니다. 그러나 현재의 문제는 출발 도시와 도착 도시의 시간대를 찾고 싶습니다. 그래서 내가 어느 도시가 어느 시간대에 있는지 추적 할 수있는 방법을 알고 싶습니다. – user702160