7

データベースに日付を挿入しています。値は次のとおりです。

s.theDate = Convert.ToDateTime("06-13-2012");

「文字列は有効な DateTime として認識されませんでした」というエラーが表示されます。これを解決するにはどうすればよいですか?

4

5 に答える 5

17

これを試して:

DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)
于 2012-06-13T06:59:58.417 に答える
2
s.theDate = DateTime.ParseExact("06-13-2012", "MM-dd-yyyy", System.Globalization.CultureInfo.InvariantCulture)
于 2012-06-13T07:01:46.537 に答える
1

ToStringを使用したDateTime型の動作を見ると、次のようになりInvariantCultureます。

new DateTime(2012, 6, 13).ToString(CultureInfo.InvariantCulture)

結果:

06/13/2012 00:00:00

したがって、逆に、インバリアント カルチャを使用した日付の解析は問題なく機能すると想定できます。

Convert.ToDateTime("06-13-2012", CultureInfo.InvariantCulture)

...そしてそうです。

そうは言っても、日付/時刻形式を想定するのは少し危険です。UI を考慮するときは、形式をカルチャ固有にする必要があると思います。それ以外の場合は、形式をカルチャに依存しないようにする必要があります。Microsoft は文化に依存しない形式として MM/dd/yyyy を採用していますが、これはあいまいな形式であり、大規模なシステムを構築したいものではありません。

于 2012-06-13T07:26:36.810 に答える
0

ISO 8601 と呼ばれるグローバル標準があり、これを使用する必要があります。この標準を使用すると、これが最終的な結果になります。

Convert.ToDateTime("2012-06-03");
于 2012-06-13T07:29:43.230 に答える
0

ParseExactすでに提案されているとおりに使用するかConvert.ToDateTime、2 番目のパラメーターを入力します。

Convert.ToDateTime("06-13-2012", new DateTimeFormatInfo{FullDateTimePattern = "MM-dd-yyyy"});
于 2012-06-13T07:04:03.600 に答える