Hola Programadores, en este dia dare un aporte completo de como extraer la zona horaria de diferentes partes del mundo
Mediante la clase TimeZoneInfo en Visual Basic.Net
Muchas veces nos vemos en la necesidad trabajar con fechas y horas, esto sucede casi siempre, parte es compleja pero parte no es muy dificil.
Esta tarde me vi en la obligacion de extraer una hora de un diferente luagar del mundo, mientras estaba creando la aplicasion en ASP.Net , casi siempre tomaba
la opcion de usar
Date.Now.AddHours(2) mas no cumplia la necesidad porque no todas las zonas horarias diferen de 2 horas adelantadas desde
mi locasion, Unas requieren 2 horas , otras requieren 4 y asi..,
La mejor Opcion es extraer las Zonas horarias, y convertirlas a una hora espesifica me diante ConvertTimeBySystemTimeZoneId de la
clase TimeZoneInfo
en el ejemplo siguiente extraremos todas las zonas horarias conocidas y extraremos hora actual.
Ejemplo:
Para crear este ejemplo necesitaremos los siguientes controles en el formulario.
El formulario nos quedara de la siguiente manera:
Ahora que ya tenemos creado el formulario Procederemos a crear el codigo.
En el evento load del formulario agregaremos un loop para extraer todas las zonas horarias y las agregaremos
al timeZoneCollectionComboBox tomando el id como referencia de cada zona horaria
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
For Each it In System.TimeZoneInfo.GetSystemTimeZones
Me.timeZoneCollectionComboBox.Items.Add(it.Id)
Next
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
El siguiente codigo nos extraera la hora actual de la zona horaria seleccionada en el timeZoneCollectionComboBox
en
el evento SelectedIndexChanged agregue el siguiente codigo.
Private Sub timeZoneCollectionComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles timeZoneCollectionComboBox.SelectedIndexChanged
Try
Me.LabelLocalSystemTime.Text = "Ho del sistema: " & Now.ToLocalTime.ToShortTimeString
Dim getTimeZone As String = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(Now.ToLocalTime, Me.timeZoneCollectionComboBox.SelectedItem).ToShortTimeString
Me.Labelzonahoariaactual.Text = "Hora de la Zona Horaria: " & getTimeZone
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Resultado de vista de las Zonas horarias en timeZoneCollectionComboBox
Hora extraida al momento de seleccionar una zona horaria del timeZoneCollectionComboBox
Espero hayan disfrutado de este ejemplo :)