1

我遇到了 DateTime.ParseExact 方法的问题,该方法抛出异常,即我的输入字符串格式不正确

代码如下:

class Program
    {
        static void Main(string[] args)
        {
            var rawDate = "Thu, 08 nov 2012 15:19:18 0";
            var _format = "ddd, dd MMM yyyy HH:mm:ss K";
            var date = DateTime.ParseExact(rawDate, _format, CultureInfo.InvariantCulture);
        }
    }

我在 SO 上发现了一些类似的线程,具有确切的日期格式,没有人在那里报告任何问题。

我按照这个作为我的指南:

ddd = Three letter Day of week
MMM = Three letter month
dd = Two digit day of month 01-31  (use "d" for 1-31)
HH = Hours using 24-hour clock. 00-24  (use "H" for 0-24)
mm = Minutes. 00-59
ss = Seconds. 00-59
K = Time zone information
yyyy = 4-digit year

什么可能导致异常?

先感谢您!

4

4 回答 4

3

我认为您的“K”可能有点偏离。

这里的链接可能会给出解释:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#KSpecifier

您可以将此留空并删除 0 - K

于 2012-11-08T15:52:52.920 回答
2

您的输入字符串中的时区错误 - 它需要采用 +00:00 格式。

要测试您的日期时间格式字符串,请反向运行它们:

Console.WriteLine(DateTime.Now.ToString(_format));

这使

Thu, 08 Nov 2012 15:50:58 +00:00
于 2012-11-08T15:53:13.250 回答
1

时区信息在我看来是最有可能的嫌疑人。

于 2012-11-08T15:51:03.373 回答
0

试试这个:

var _format = "ddd, dd MMM yyyy HH:mm:ss 0";

但是,您将丢失时区信息。

于 2012-11-08T15:53:13.577 回答