3

DateTime オブジェクトがあります

DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0)

この方法で文字列に変換しています

string str = dtt.ToString("yyyyMMddtt");

str「20120618PM」と表示されます

ここまではいい

しかし、これを DateTime.ParseExact() を使用して DateTime に変換しようとすると、エラーが発生します String was not recognised a valid DateTime

dtt = DateTime.ParseExact(str, "yyyyMMddtt", null);

文化を提供しようとしましたが、それでもエラーが発生します

dtt = DateTime.ParseExact(str, "yyyyMMddtt", CultureInfo.InvariantCulture);

ここで何が間違っているのですか?

4

4 に答える 4

5

DateTime.ParseExact メソッドのドキュメントによると、次の場合に取得FormatExceptionされます。

s の時間コンポーネントと AM/PM 指定子が一致しません。

時間コンポーネントがまったくなく、例外につながる合意はあり得ません。

本当にフォーマットに固執したい場合yyyyMMddttは、AM/PM 部分の独自の解析を実行し、それに基づいて の時刻部分を変更する必要がありDateTimeます。その後、 を使用して残りの日付を解析できますyyyyMMdd

于 2012-07-04T11:06:03.093 に答える
1

この文字列"20120618PM"にはtime.

あなたが得ているのと同じ文字列だと確信していますか?

于 2012-07-04T11:01:56.637 に答える
0

MartinとAsifが示唆しているように、AM / PMを決定するには、ParseExactの文字列に時間を含める必要があります。

    DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0);
    string str = dtt.ToString("yyyyMMddhhtt");
    dtt = DateTime.ParseExact(str, "yyyyMMddhhtt", CultureInfo.InvariantCulture);
于 2012-07-04T11:15:48.370 に答える
0

フォーマット yyyyMMdd hh:mm:ss を変更しましたが、うまくいくことを願っています

DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0);
string str = dtt.ToString("yyyyMMdd hh:mm:ss");
dtt = DateTime.ParseExact(str, "yyyyMMdd hh:mm:ss", null);
于 2012-07-04T11:05:59.693 に答える