C# 分析包含时区信息的字符串DateTime

C# 分析包含时区信息的字符串DateTime,c#,datetime,timezone,C#,Datetime,Timezone,我试图将字符串值转换为日期时间值,但收到System.FormatException错误。这是因为时区信息是日期字符串的一部分。是否有任何方法可以处理此转换 string date = "Wed, 04 Jan 2012 20:18:00 EST"; DateTime dt = Convert.ToDateTime(date); Console.WriteLine(dt.ToString()); 我不相信有任何东西会解析或格式化时区缩写。您必须将其去掉,解析本地部分,计算出缩写中的时区(祝您好

我试图将字符串值转换为日期时间值,但收到System.FormatException错误。这是因为时区信息是日期字符串的一部分。是否有任何方法可以处理此转换

string date = "Wed, 04 Jan 2012 20:18:00 EST";
DateTime dt = Convert.ToDateTime(date);
Console.WriteLine(dt.ToString());

我不相信有任何东西会解析或格式化时区缩写。您必须将其去掉,解析本地部分,计算出缩写中的时区(祝您好运,它们是不明确的),然后将该时区应用于本地时间以获得UTC值(同样,这可能是不明确的)


如果你完全控制了格式,我会尽量避免包含时区信息(如果可以的话),或者只包含一个偏移量而不是一个时区(偏移量当然不会给出相同的信息),或者如果你真的需要时区,我会尽量避免包含一个明确的时区标识符。注意.NET使用Windows系统时区标识符;我自己的项目使用更广泛的标识符,如果这对您有帮助的话。

我不确定是否可以通过
DateTimeOffset
@V4Vendetta:您打算怎么做
DateTimeOffset
没有使用不同的自定义日期和时间格式字符串说明符集,因此,除非我在该页面上遗漏了一些内容,否则我认为没有任何内置内容……感谢您的建议。我希望我不必走那条路。不幸的是,我无法控制格式。我看到SyndicationFeed阅读器能够解析类似的日期,所以希望这是一种更简单的方法。@JonSkeet不确定,因为我尝试了类似于
DateTimeOffset.parse(“2012-02-01 11:35:47.743-04:00”)的方法
因此,如果将EST替换为偏移量值,可能会有这样的想法,但在美国和澳大利亚CST=中央标准时间以及中国标准时间,这可能不是一个好主意。如果你现在没有问题,那么你以后会有问题的。