DateTime解析ANSI C时间戳

本文关键字:时间戳 ANSI 解析 DateTime | 更新日期: 2023-09-27 18:02:54

我正在尝试解析RFC2616

中指定的HTTP/1.1报头中的日期/时间格式

如何在c#中解析ANSI 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",如果它是一个个位数日期,它不接受前导空格。"dd"需要以0开头

是否有任何简单的方法,或者可能有一个库已经处理了HTTP/1.1中允许的三种日期/时间格式?

DateTime解析ANSI C时间戳

如何使用DateTime.TryParseExact过载,将string[]作为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))
{
    //
}