2009-08-03 23 views
7

estoy buscando para implementar una función con una firma algo como lo siguiente:TimeZoneInfo y códigos de país

bool IsTimeZoneValid(string countryCode, DateTime localTime); 

La intención es determinar si el país tiene una zona horaria en la que la hora local sería válida , dado que sabemos la hora UTC actual. Digamos, por el bien del argumento, que "válido" significa que cuando se convierte a UTC, el tiempo es de +/- 30 minutos a partir de lo que creemos que es el momento.

Por ejemplo, decir que actualmente es 03/08/2009 18:25:00 UTC y luego se le dio la siguiente llamada de método para Australia, debe devolver true ya que es una hora válida en la zona "Hora estándar del este":

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

Sin embargo, la siguiente llamada para Francia debe fallar ya que no es una hora válida en la zona horaria de Francia.

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

Esto tiene que ser exacta, y tener en cuenta el horario de ahorro, etc.

.NET 3.5 incluye la nueva clase TimeZoneInfo que puede hacer un montón de la conversión para mí si sé qué zonas horarias existen en un país específico, pero parece que no puedo encontrar ninguna búsqueda incorporada para esto. ¿Me estoy perdiendo algo o tendré que crear manualmente una tabla de asignaciones de zonas horarias?

Para reiterar, mi pregunta es: Dado un código de país, ¿cómo puedo obtener una lista de zonas horarias. Alternativamente, ¿hay alguna otra manera de abordar esto que me he perdido?

+0

+1 También me gusta mucho ser capaz de obtener los husos horarios válidos para un país determinado. –

Respuesta

5

De forma predeterminada, windows solo agrega la información de zona horaria para su zona horaria local, que puede ser la causa del problema.

Esta clase funciona solo para la zona horaria local y cualquier zona horaria predefinida. Si desea usar esto para otras zonas horarias, debe tener las configuraciones de registro agregadas a la máquina para todas las zonas horarias necesarias o crear información de zona horaria personalizada usando CreateCustomTimeZone.

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

+0

lista de id predeterminado: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider

+0

cargando un elemento: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider

Cuestiones relacionadas