-1

文字列を日時に変換しようとしています。しかし、それは私に例外を与えています。親切に助けてください。

DateTime dt = Convert.ToDateTime("15-07-2013");

「文字列は有効な DateTime として認識されませんでした。」という例外が発生します。

今、私は「15-07-2013 07:12:00 PM」という文字列を持っています。以下に述べるようにコードを使用していると、例外が発生します。

 DateTime dtCurrentFile = DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);

同じ例外が発生しています。

4

4 に答える 4

2

文字列形式は "dd-MM-yyyy" ですが、Convert.ToDateTime()デフォルトの形式は"MM-dd-yyyy"です。したがって、オプションは次のとおりです。

  1. 文字列形式を「07/15/2013」に変更する
  2. 次を使用して、変換を強制的に適応させます。

    DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy",CultureInfo.InvariantCulture, DateTimeStyles.None);

于 2013-07-16T07:48:43.777 に答える
1

を使用して常にフォーマットを強制し、DateTime.ParseExactカルチャの問題を回避できInvariantCultureます。

DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

カスタムの日付と時刻の書式文字列

ただし、あなたのコードは culture で機能します"de-DE"

更新

hham/pm 指定子を提供するときは、時間に小文字を使用する必要があります。

DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None)

HHは、AM/PM 指定子ではまったく意味のない 24 時間形式を意味します。

于 2013-07-16T07:38:30.983 に答える
0

ParseExact を使用してみてください:

DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", null);
于 2013-07-16T07:38:53.073 に答える
0

例外が発生する理由は、デフォルトで C# がこの形式
「MM/dd/yyyy」の日時をサポートしていることです。ここで、日時を渡そうとしているので、この形式は「dd-MM-yyyy」
ですが、形式を使用して変換できます。ただし、そのためには、日付がどの形式であるかをコンパイラに伝える必要があるため、使用できます
DateTime myDate = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);

于 2013-07-16T07:47:36.233 に答える