DateTime 解析 ANSI C 时间戳

DateTime Parse ANSI C timestamp

我正在尝试按照 RFC2616

中指定的 HTTP/1.1 headers 格式解析 Date/Time 格式

如何在 C# 中解析 A​​NSI C 时间戳?
我得到的最接近的是:

string dateFormat = "ddd MMM d HH':'mm':'ss yyyy";
DateTime time = DateTime.ParseExact("Mon Jan  2 15:04:05 2006", dateFormat, CultureInfo.InvariantCulture);

问题在于 "d" 不接受前导 space,以防它是一个数字日期。 "dd" 需要前导 0。

是否有任何简单的解决方法,或者可能已经处理 HTTP/1.1 中允许的三种 date/time 格式的库?

使用 DateTime.TryParseExact overload that takes string[] as a format parameter with AllowInnerWhite 样式怎么样?

string s = "Sun, 06 Nov 1994 08:49:37 GMT";
DateTime dt;
var formats = new[] 
{
    "ddd, dd MMM yyyy HH:mm:ss 'GMT'",
    "dddd, dd-MMM-yy HH:mm:ss 'GMT'",
    "ddd MMM  d HH:mm:ss yyyy"
};
if(DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture,
                          DateTimeStyles.AllowInnerWhite, out dt))
{
    //
}