Я испытываю DateTime.TryParseExact
метод, и я приехал через случай, который я просто не получаю. У меня есть некоторые форматы и некоторые предметы для парсинга этого, каждый должен соответствовать одному из форматов отлично:
var formats = new[]
{
"%H",
"HH",
"Hmm",
"HHmm",
"Hmmss",
"HHmmss",
};
var subjects = new[]
{
"1",
"12",
"123",
"1234",
"12345",
"123456",
};
Я тогда пытаюсь проанализировать их всех и распечатать результаты:
foreach(var subject in subjects)
{
DateTime result;
DateTime.TryParseExact(subject, formats,
CultureInfo.InvariantCulture,
DateTimeStyles.NoCurrentDateDefault,
out result);
Console.WriteLine("{0,-6} : {1}",
subject,
result.ToString("T", CultureInfo.InvariantCulture));
}
Я получаю следующее:
1 : 01:00:00
12 : 12:00:00
123 : 00:00:00
1234 : 12:34:00
12345 : 00:00:00
123456 : 12:34:56
И к моему вопросу..., почему это перестало работать на 123 и 12345? Разве они не должны были становиться 1:23:00 и 1:23:45? Что я пропускаю здесь? И как я могу заставить это работать, поскольку я ожидал бы это к?
Обновление: Так, кажется, что мы, возможно, выяснили, почему это приводит вид к сбою. Походит H
на самом деле захватывает две цифры и затем уезжает всего один в mm
, который тогда перестал бы работать. Но, у кого-либо есть хорошая идея о том, как я могу изменить этот код так, чтобы я получил бы результат, который я ищу?
Другое обновление: Думайте, что я нашел разумное решение теперь. Добавленный это как ответ. Примет его через 2 дня, если кто-то еще не придумывает еще лучший. Спасибо за справку!