解析包含TimeZone信息的字符串DateTime

我试图将字符串值转换为日期时间值,但我收到System.FormatException错误。 这是因为时区信息是日期字符串的一部分。 有没有能够处理这种转换的方法?

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

我不相信有任何自定义日期和时间格式字符串 ,它将解析或格式化时区缩写。 您将不得不将其剥离,解析本地部分,根据缩写确定哪个时区(祝你好运 – 它们不明确)然后将该时区应用于当地时间以获得UTC值(再次,这可能是模棱两可的)。

如果您完全控制格式,我会尽量避免包括时区信息,或者包括偏移而不是时区如果这一切都很重要(偏移量不会给出相同的信息)当然),或者如果你真的需要时区,那就是一个明确的时区标识符。 请注意,.NET使用Windows系统时区标识符; 我自己的Noda Time项目使用更广泛的Olson / zoneinfo / tz标识符,如果这对你有帮助的话。