C# Datetime格式问题:如何将Datetime转换为4位数的天或月
我正在尝试从播客XML解析日期时间数据。C# Datetime格式问题:如何将Datetime转换为4位数的天或月,c#,xml,wpf,datetime,C#,Xml,Wpf,Datetime,我正在尝试从播客XML解析日期时间数据。 基本上,它包含http头格式 (Format-A) Fri, 28 Aug 2015 00:00:00 EST 但是,有时它的格式不同,有4位数的日和月,如下所示 (Format-B) Thur, 30 July 2015 00:00:00 EST 我不知道为什么播客同时提供两种不同的格式。 我想我可以简单地解析这个网站提到的格式。 但是它不能只使用DateTime.Parse()方法 所以我写了这段代码 try { dtPubDate =
基本上,它包含http头格式
(Format-A) Fri, 28 Aug 2015 00:00:00 EST
但是,有时它的格式不同,有4位数的日和月,如下所示
(Format-B) Thur, 30 July 2015 00:00:00 EST
我不知道为什么播客同时提供两种不同的格式。
我想我可以简单地解析这个网站提到的格式。
但是它不能只使用DateTime.Parse()方法
所以我写了这段代码
try
{
dtPubDate = DateTime.ParseExact(strhttpTime,
"ddd, dd MMM yyyy HH:mm:ss 'EST'",
CultureInfo.InvariantCulture.DateTimeFormat,
DateTimeStyles.AssumeUniversal);
}
catch (FormatException)
{
dtPubDate = DateTime.ParseExact(strhttpTime,
"dddd, dd MMMM yyyy HH:mm:ss 'EST'",
CultureInfo.InvariantCulture.DateTimeFormat,
DateTimeStyles.AssumeUniversal);
}
在我编写这段代码时,如果第一种格式不起作用,请尝试第二种格式。
但它仍然得到了Format-B的例外。 这个URL就是我遇到的问题。
如您所见,有两种不同的格式带有pubDate标记。
我遗漏了什么?格式字符串
dddd
将与全天名称匹配,例如“星期四”,而不是4个字符
发件人:
“dddd”自定义格式说明符(加上任意数量的附加“d”说明符)表示一周中某一天的全名。从当前区域性或指定区域性的DateTimeFormatInfo.DayNames属性检索一周中某一天的本地化名称
你可以删掉逗号之前的所有内容,然后解析它
var tidyDate = strhttpTime.Split(',')[1].Trim();
dtPubDate = DateTime.ParseExact(
tidyDate,
"ddd, dd MMM yyyy HH:mm:ss 'EST'",
CultureInfo.InvariantCulture.DateTimeFormat,
DateTimeStyles.AssumeUniversal);