Windows와 IANA 시간대 ID 간 변환을위한 데이터의 기본 소스는 windowsZones.xml
파일이며 유니 코드 CLDR 프로젝트의 일부로 분배됩니다 . 최신 개발 버전은 여기 에서 찾을 수 있습니다 .
그러나 CLDR은 매년 두 번만 릴리스됩니다. 이로 인해 Windows 업데이트주기 및 IANA 표준 시간대 데이터베이스의 불규칙 업데이트와 함께 CLDR 데이터를 직접 사용하는 것이 복잡해집니다. 표준 시간대 변경 자체는 전 세계 여러 정부의 요구에 따라 이루어지며 모든 변경이 각각의 유효 날짜 이전에 이러한 릴리스 주기로 변경 될 수 있도록 충분한 통지를받은 것은 아닙니다.
CLDR이 엄밀히 다루지 않는 처리해야 할 몇 가지 다른 경우가 있으며 때때로 새로운 경우가 나타납니다. 따라서 솔루션의 복잡성 을 Nuget에서 설치할 수있는 TimeZoneConverter 마이크로 라이브러리에 캡슐화했습니다.
이 라이브러리를 사용하는 것은 간단합니다. 다음은 변환의 예입니다.
string tz = TZConvert.IanaToWindows("America/New_York");
// Result: "Eastern Standard Time"
string tz = TZConvert.WindowsToIana("Eastern Standard Time");
// result: "America/New_York"
string tz = TZConvert.WindowsToIana("Eastern Standard Time", "CA");
// result: "America/Toronto"
프로젝트 사이트 에는 더 많은 예제 가 있습니다 .
IANA 표준 시간대를 단일 Windows 표준 시간대로 매핑 할 수 있지만 그 반대는 아닙니다. 단일 Windows 시간대가 둘 이상의 IANA 시간대에 매핑 될 수 있습니다. 이것은 위의 예에서 볼 수 있습니다. 여기서는 및로 Eastern Standard Time
모두 매핑 America/New_York
됩니다 America/Toronto
. TimeZoneConverter는 "001"
국가 코드를 구체적으로 제공하지 않고 해당 국가의 다른 영역과 일치하지 않는 한 CLDR 이 "골든 존"이라고 표시 한 것을 제공합니다.
참고 :이 답변은 수년간 발전해 왔으므로 아래 주석은 현재 개정판에 적용되거나 적용되지 않을 수 있습니다. 자세한 내용은 편집 기록을 검토하십시오. 감사.
(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi
제공Asia/Calcutta
이 있어야한다Asia/Kolkata
.TzdbDateTimeZoneSource
이전 값 이 포함 된 것 같습니다 .