2017-02-23 6 views
1

ポッドキャストXMLからDateTimeデータを解析しようとしています。
基本的には、httpヘッダー形式です。日時フォーマットの問題:4桁の日数または月数のdatetimeを変換する方法

(Format-A) Fri, 28 Aug 2015 00:00:00 EST 

ただし、次のように4桁の日数と月が異なる場合があります。

(Format-B) Thur, 30 July 2015 00:00:00 EST 

ポッドキャストが2つの異なるフォーマットを同時に提供する理由はわかりません。
私は、このウェブサイトが言及しているようにこのフォーマットを単純に解析できると考えました。
https://www.dotnetperls.com/datetime-parse
しかし、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); 
} 

私がこのコードを書いたので、最初のフォーマットがうまくいかない場合は、2番目のフォーマットを試してみてください。
しかし、Format-Bではまだ例外があります。 このURLに問題があります。 http://www.thebreathingmusic.com/podcast/podcast.xml
ご覧のとおり、pubDateタグには2つの異なるフォーマットがあります。
私は何が欠けていますか?

答えて

2

フォーマット文字列ddddは、曜日名全体と一致します。 "木曜日"、4文字ではありません。 the docsから

は「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); 
関連する問題