将字符串中的时间和日期转换为日期 VB.net

Convert Time and Date in string to date VB.net

我正在使用来自多个来源的 RSS 提要,并且我正在按日期对提要进行排序。但是,我收到的日期在不同的时区。

这是我得到的一些日期字符串的格式:

2021 年 12 月 8 日星期三01:40:31-0500 2021 年 12 月 8 日,星期三 11:11:19 -0600

“-500”表示时区是UTC-5。我需要用那个“-0500”把这个字符串转换成日期,而日期只需要是UTC。

基本上是从“2021 年 12 月 8 日星期三 01:40:31 -0500”到“12/08/2021 06:40:31”

我已经设法拆分字符串以按日期排序,但由于时差,它并没有多大帮助。

是否有可用于将字符串按原样转换为日期且仅转换为 UTC 时间的编码?还是只有一个地方可以让我开始?

提前致谢。

使用 DateTime.ParseExact,您可以指定要转换的格式,并且可以包括时区偏移的“zzz”。您还可以指定您想要 UTC 格式的结果:

Dim s = "Wed 08 Dec 2021 01:40:31 -0500"
Dim d = DateTime.ParseExact(s, "ddd dd MMM yyyy HH:mm:ss zzz", Nothing, Globalization.DateTimeStyles.AdjustToUniversal)

Console.WriteLine(d.ToString("yyyy-MM-dd HH:mm:ss"))
Console.WriteLine(d.Kind.ToString())

输出:

2021-12-08 06:40:31
Utc

当然,根据需要格式化结果。

或者,如果需要,您可以使用 DateTimeOffset 结构保留偏移量并将其调整为 UTC 以表示为字符串:

Dim s = "Wed 08 Dec 2021 01:40:31 -0500"
Dim d = DateTimeOffset.ParseExact(s, "ddd dd MMM yyyy HH:mm:ss zzz", Nothing)

Console.WriteLine(d.ToUniversalTime.ToString("yyyy-MM-dd HH:mm:ss"))

输出:

2021-12-08 06:40:31