[C#] RSS情報のpubDateなどの日付のフォーマットを変更する

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++;
}

是非使ってみて下さい。

C#C#, RSS

Posted by Kunisura