2009-08-03 18 views
7

szukam zaimplementować funkcję z czymś podpisu tak:TimeZoneInfo i kraj kody

bool IsTimeZoneValid(string countryCode, DateTime localTime); 

intencją jest, aby określić, czy dany kraj ma strefę czasową, w której czas lokalny będzie obowiązywać , biorąc pod uwagę, że znamy aktualny czas UTC. Powiedzmy, ze względu na argument, że "poprawna" oznacza, że ​​po konwersji na UTC czas wynosi +/- 30 minut od tego, co uważamy za czas.

Na przykład, powiedzmy, że jest obecnie 03/08/2009 18:25:00 UTC, a następnie podana następująca metoda call dla Australii, powinna zwrócić true, ponieważ jest to poprawny czas w strefie "Eastern Standard Time":

IsTimeZoneValid("AU", DateTime.Parse("04/08/2009 03:25:00")); 

Jednak poniższe wezwanie do Francji powinno się nie udać, ponieważ nie jest to prawidłowy czas we francuskiej strefie czasowej.

IsTimeZoneValid("FR", DateTime.Parse("04/08/2009 03:25:00")); 

To musi być dokładne i uwzględniają czasu letniego itp

.NET 3.5 zawiera nowy TimeZoneInfo klasy, który może zrobić dużo konwersji dla mnie, czy wiem, co stref czasowych istnieją w określonym kraju, ale nie mogę znaleźć żadnego wbudowanego odnośnika do tego. Czy brakuje mi czegoś, czy też będę musiał ręcznie utworzyć tabelę mapowania kraju na strefę czasową?

Aby powtórzyć, moje pytanie brzmi: Biorąc pod uwagę kod kraju, w jaki sposób mogę uzyskać listę stref czasowych. Czy istnieje inny sposób podejścia do tego, co przeoczyłem?

+0

+1 Chciałbym również bardzo lubię być w stanie uzyskać prawidłowe strefy czasowe dla danego kraju. –

Odpowiedz

5

Domyślnie system Windows dodaje tylko informacje Strefy czasowej dla lokalnej strefy czasowej, co może być przyczyną problemu.

Ta klasa działa tylko dla lokalnej strefy czasowej i dowolnych wstępnie zdefiniowanych stref czasowych. Jeśli chcesz użyć tego dla innych stref czasowych, musisz mieć ustawienia rejestru dodane do komputera dla wszystkich wymaganych stref czasowych lub utworzyć niestandardową strefę czasową za pomocą CreateCustomTimeZone.

http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx?ppud=4 http://msdn.microsoft.com/en-us/library/bb384268.aspx

+0

lista domyślnego identyfikatora: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider

+0

ładowanie elementu: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider