文字列を日時に変換したい。エラーが発生しますThis is not a valid datetime
。
変換したい文字列とコードは次のとおりです。
string date1 = "9/13/2012 5:26:06 PM";
TimePart = DateTime.ParseExact(date1, "M/d/yyyy HH:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
M/dd/yyyy h:mm:ss tt
私はそれがあなたのフォーマットパラメータにあるべきだと思います。
あなたのフォーマットは本当にそうM/d/yyyy h:mm:ss tt
です。違いは、 (24時間、0から2桁への埋め込みh
)ではなく、(12時間、必要な数の桁のみ)です。HH
入力形式がまったく異なる可能性がDateTime.Parse
ある場合は、正確な形式を指定する必要がないように、代わりに使用する必要があります。 ParseExact
より高速で、指定された形式と一致する必要があります。これはキャストで望ましい場合があります。
小文字を使用する必要がありますh
:
DateTime TimePart = DateTime.ParseExact(
date1,
"M/d/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture);
Console.WriteLine(TimePart); // 09/13/2012 17:26:06
大文字の「H」は24時間制で、小文字の「h」は午前/午後の12時間制です。
h
12時間制には小文字を使用する必要があります(AM/PM
指定子があるため)。
さらに、時間にh
つながるものがなく、それを期待しているので、 1つだけを使用する必要があります。0
hh
動作するフォーマット文字列:
"M/d/yyyy h:mm:ss tt"
HH
が「5」と一致していないようです。試してみてくださいh
。