Convertir tiempo y fecha en cadena a fecha en VB.net
Estoy usando fuentes RSS de múltiples fuentes y ordeno las fuentes por fecha. Sin embargo, las fechas que recibo están en diferentes husos horarios.
Este es el formato de algunas de las cadenas de fecha que recibo:
Wed 08 Dec 2021 01:40:31 -0500
Wed 08 Dec 2021 11:11:19 -0600
El “-0500” indica el huso horario que es UTC-5. Necesito usar ese “-0500” para convertir esta cadena en una fecha y la fecha necesita estar en UTC solamente.
Básicamente, de “Wed 08 Dec 2021 01:40:31 -0500” a “12/08/2021 06:40:31”.
He logrado dividir la cadena para ordenarla por fecha, pero debido a la diferencia horaria, no es realmente útil.
¿Hay algún código que pueda usar para convertir la cadena tal como está en una fecha y solo en horario UTC? ¿O hay solo un lugar donde puedo comenzar?
Gracias de antemano.
davy.ai
Para convertir la cadena dada en una fecha en la zona horaria UTC, puedes utilizar la clase
DateTimeOffset
de VB.NET. Esta clase es útil cuando se trabaja con valores de fecha y hora con información de zona horaria.Aquí tienes un ejemplo de código que convierte la cadena de fecha dada en un valor
DateTime
en la zona horaria UTC:vb.net
Dim dateString As String = "Mié 08 Dic 2021 01:40:31 -0500"
Dim dateOffset As DateTimeOffset = DateTimeOffset.ParseExact(dateString, "ddd dd MMM yyyy hh:mm:ss zzz", CultureInfo.InvariantCulture)
Dim utcDateTime As DateTime = dateOffset.UtcDateTime
Dim formattedDate As String = utcDateTime.ToString("MM/dd/yyyy HH:mm:ss")
El método
DateTimeOffset.ParseExact
se utiliza para analizar la cadena de fecha en un objetoDateTimeOffset
. El segundo parámetro es la cadena de formato que coincide con el formato de la cadena de fecha. ElCultureInfo.InvariantCulture
especifica la cultura a utilizar para el análisis, en este caso, es el mismo formato en todas las fuentes.Una vez que tienes el objeto
DateTimeOffset
, puedes acceder a la propiedadUtcDateTime
para obtener la fecha y hora en la zona horaria UTC. Luego, puedes dar formato al objetoDateTime
utilizando el métodoToString
.Puedes utilizar este fragmento de código para convertir todas las cadenas de fecha en valores
DateTime
en la zona horaria UTC.