.NET: Почему TryParseExact перестал работать на Hmm и Hmmss?

Я испытываю 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 дня, если кто-то еще не придумывает еще лучший. Спасибо за справку!

11
задан Svish 6 January 2010 в 21:39
поделиться