解析包含TimeZone Info的字符串DateTime

时间:2012-01-06 07:10:28

标签: c# datetime timezone

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

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

1 个答案:

答案 0 :(得分:5)

我不相信任何custom date and time format string会解析或格式化时区缩写。您必须将其剥离,解析本地部分,根据缩写确定哪个时区(祝您好运 - 他们不明确)然后将该时区应用于当地时间得到一个UTC值(再次,这可能是不明确的)。

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