web-dev-qa-db-ja.com

C#DateTime.ParseExact

解析されてからデータベースに挿入されるタブ区切りファイルがあります。日付列に遭遇すると、解析に問題があります。

私が持っているコードは次のとおりです。

var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture);

line[i]の文字列の形式は7/7/2011 10:48です。

文字列で表されるDateTimeは、カレンダーSystem.Globalization.GregorianCalendarではサポートされていません。

40
Jonathan

フォーマット文字列が間違っています。に変更する

insert = DateTime.ParseExact(line[i], "M/d/yyyy hh:mm", CultureInfo.InvariantCulture);
69
Fischermaen

これは、line[i]のアメリカ形式の日付とFormatStringの英国形式があるためです。

11/20/2011
M / d/yyyy

FormatStringを次のように変更する必要があるかもしれません。

"M/d/yyyy h:mm"
3
DaveShaw

これはおそらく、この関連するSOスレッドで示されているカルチャと同じ問題です: DateTime.ParseExact()が「M/d/yyyy」を使用して「9/1/2009」を解析できない理由

既にカルチャを指定しているので、スラッシュをエスケープしてみてください。

1
Pieter

これを試して

var  insert = DateTime.ParseExact(line[i], "M/d/yyyy h:mm", CultureInfo.InvariantCulture);
1
Enigma State