15

日付「01/22/2013 10:00:00」を「22/01/2013 10:00:00」に変換したいのですが、メソッドが日付文字列を認識しません。

 DateTime dt = DateTime.ParseExact(StartDate, "MM dd yyyy h:mm", CultureInfo.InvariantCulture);
            StartDate = dt.ToString("dd/M/yyyy");
 dt = DateTime.ParseExact(EndDate, "MMM dd yyyy h:mm", CultureInfo.InvariantCulture);
            EndDate = dt.ToString("dd/M/yyyy");

このエラーが発生しています:

System.FormatException - 文字列が有効な DateTime として認識されませんでした。

ParseExact の正しい文字列形式は何ですか?

4

4 に答える 4

19

あなたの日付のフォーマットは間違っています。米国の場合は01/22/2013 10:00:00どちらかですMM/dd/yyyy HH:mm:ss。英国の場合はそうなるでしょうdd/MM/yyyy

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

dt.ToString("dd/MM/yyyy");

ここでは24時間制を想定しているため、を使用していることに注意してくださいHH。必要な12時間制が必要な場合hhは、AM/PMなども配置する必要があります。

于 2013-02-05T09:42:58.220 に答える
5

このコードを使用します:

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
            StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss");

のフォーマット文字列への変更に注意してくださいParseExact

于 2013-02-05T09:45:54.133 に答える
1

スラッシュを使用していて、日付文字列に「秒」の部分があります。ParseExactメソッドで提供される形式を変更する必要があります。

string StartDate = "01/22/2013 10:00:00";            
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/M/yyyy");
于 2013-02-05T09:44:22.870 に答える
1

これを試して

var str = "01/22/2013 10:00:00";
var date = DateTime.ParseExact(str, "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-GB"));
var res = date.ToString("dd/MM/yyyy HH:mm:ss", new CultureInfo("en-GB"));
Console.WriteLine(res);
Console.WriteLine("22/01/2013 10:00:00" == res);
于 2013-02-05T09:46:16.033 に答える