RSSデータの日付フォーマットを変更する
RSSデータのpubDateなどは、下記のようなフォーマットとなっています。
Th, 26 Dec 2019 04:00:00 +0000
この上記フォーマットを「yyyy-MM-dd」の形に変更しようと思います。
/// <summary>
/// RSS日付情報を「yyyy-MM-dd」に変更する
/// </summary>
/// <param name="pubDate">RSS日付情報</param>
/// <returns>変換後の日付</returns>
private static string ParseDate(string pubDate)
{
DateTime dt;
if (DateTime.TryParse(pubDate, out dt) == true)
{
return dt.ToString("yyyy-MM-dd");
}
return "";
}
上記を下記のように利用します。
WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
string res = wc.DownloadString(rss);
XDocument xd = XDocument.Parse(XmlSanitize(res));
XElement element = xd.Root;
// channelを取得する・・・(1)
XElement channelElement = element.Element("channel");
RssInfo rssInfo = new RssInfo();
rssInfo.Title = channelElement.Element("title").Value;
rssInfo.Description = channelElement.Element("description").Value;
rssInfo.Link = channelElement.Element("link").Value;
rssInfo.LastBuildDate = channelElement.Element("lastBuildDate").Value;
// itemを取得する・・・(2)
IEnumerable<XElement> elementItems = channelElement.Elements("item");
List<RssItemInfo> rssItemInfos = new List<RssItemInfo>();
int cnt = 0;
foreach(XElement elmItem in elementItems)
{
// 取得記事数が指定数に到達したらループ処理終了
if (cnt == readCnt)
{
break;
}
RssItemInfo itemInfo = new RssItemInfo();
itemInfo.Title = elmItem.Element("title").Value;
itemInfo.Link = elmItem.Element("link").Value;
// ここで使ってみます。
itemInfo.PubDate = ParseDate(elmItem.Element("pubDate").Value);
rssItemInfos.Add(itemInfo);
cnt++;
}
是非使ってみて下さい。