「16:23:01」は「hh:mm:ss tt」のパターンと一致しません。午前/午後指定子がなく、16 は明らかに 12 時間制ではありません。解析部分でその形式を指定しているので、既存のデータの形式と一致させる必要があります。あなたがしたい:
DateTime dateTime = DateTime.ParseExact(time, "HH:mm:ss",
CultureInfo.InvariantCulture);
(現在の文化ではなく、不変の文化に注意してください。入力が常にコロンを使用していると仮定します。)
にフォーマットする場合は、その部分を呼び出しhh:mm:ss tt
に入れる必要があります。ToString
lblClock.Text = date.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
または、さらに良い(IMO)「文化の長いパターンが何であれ」を使用します。
lblClock.Text = date.ToString("T", CultureInfo.CurrentCulture);
hh
また、異常なことにも注意してください。通常、10 未満の数値の数値を 0-left-pad したくありません。
(また、タイプを持つ私のNoda Time API の使用を検討してLocalTime
ください。これは、「時刻」だけにより適切に一致します。)