"16:23:01" не соответствует шаблону "hh: mm: ss tt" - у него нет указателя am/pm, а 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);
Или еще лучше (ИМО) использовать «любой длинный образец время для культуры»:
lblClock.Text = date.ToString("T", CultureInfo.CurrentCulture);
Также обратите внимание, что hh
необычен; как правило, вы не хочет 0-левую колодку числа для чисел меньше 10.
(Также рекомендуется использовать мой Noda Time API, который имеет LocalTime
типа - более подходящий матч за просто «время день»)
Спасибо, что отлично поработал! – Apollo
Да, да. благодаря – Apollo