私はc#を使用しています。
DateTime.ParseExact("4/4/2010 4:20:00 PM", "M'/'d'/'yyyy H':'mm':'ss' 'tt", null)
戻り値は常に4:20 AMです-ttの使用で何が問題になっていますか?
ありがとう!
時間形式(H
)を次のように小文字にします。
DateTime.ParseExact(
"4/4/2010 4:20:00 PM",
"M/d/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture);
大文字の "H"は24時間制を示し、小文字の "h"は12時間制を示し、候補文字列のAM/PMを考慮します。
補足:IFormatProvider
のインスタンスをこのようなメソッドに提供することをお勧めします(たとえCultureInfo.InvariantCulture
であっても)。これは、問題にぶつかるまで重要ではないことの1つであるため、文化情報を指定する習慣をつけるのは良いことです。
以下を試してください:
Console.WriteLine(DateTime.ParseExact("4/4/2010 4:20:00 PM", "M'/'d'/'yyyy h':'mm':'ss tt", null));
これは出力します:
4/4/2010 4:20:00 PM
フォーマット文字列の時間引数には小文字の「h」を使用する必要があります。大文字の「H」は24時間制なので、「4」は午前4時と認識されます(「16」は午後4時なので)。
DateTime.ParseExact("4/4/2010 4:20:00 PM", "M/d/yyyy h:mm:ss:tt", null)