2012-03-15 24 views
1

私はitextsharpを使用してpdfファイルから変更日を抽出しています。文字列はD:20120224093340の形式で返されます。私はそうのような日時にその文字列を解析しようとしている:日付を解析中にエラーが発生しました

string modDate = ""; 

reader.Info.TryGetValue("ModDate", out modDate); 

System.Globalization.CultureInfo provider = 
System.Globalization.CultureInfo.InvariantCulture; 

pdfModDate = DateTime.ParseExact(formattedDate, "D:yyyyddMMHHmmss", provider); 

しかし、私は、このエラーメッセージが出ます:文字列で表さたDateTimeが、カレンダSystem.Globalization.GregorianCalendarではサポートされていません。

このエラーの意味はわかりません。このコードは、あなたが提供する日付を次の形式である...

+0

modDateで何もしないでください – Jmyster

+0

あなたの条件で日付を "手動で"解析してみてください。 2012年の24日目の2日目を取得します。これは、エラーの意味を理解するのに役立ちます。 – Vache

答えて

8

をあなたの月ではありませんこれは、24でありますグレゴリオ暦のサポート:

D:20120224093340 
D:yyyyddMMHHmmss 
     ^^ 
+0

うわー、どう見落としたのか分かりません。ありがとう! – broke

+1

@broke:コーヒーブレークの時間:D – CodeZombie

+0

それは私たちすべてに起こります! –

2

を作業する必要があります。

D:yyyyMMddHHmmss 

ない英語形式MM/DD/YYYY

1

文字列の先頭からD:を取り除くことができます。 ParseExact関数は、大文字Dを日付書式文字列の特殊文字として認識します。 MSDNによると、 "D"は長い日付形式の略です。

また、曜日と月を切り替える必要があります。彼らが返す順序は、年、月、日、時、分、秒です。

3

try "D:yyyyMMddHHmmss"あなたは日と月を切り替えました。

1
string date = "D:20120224093340"; 
     System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture; 
     DateTime dateTime = DateTime.ParseExact(date,"D:yyyyMMddHHmmss",provider); 

ddMMを切り替えた後。

関連する問題