.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? не должен»те стали 01:23:00 и 01:23:45? Что мне здесь не хватает? И как я могу заставить его работать так, как я ожидал?

Обновить: Так что, похоже, мы могли понять, почему это не так. Похоже наH на самом деле захват двух цифр, а затем оставляя только одну дляmm, который тогда потерпит неудачу. Но есть ли у кого-нибудь хорошая идея о том, как я могу изменить этот код, чтобы получить результат, который я ищу?

Еще одно обновление: Думаю яМы нашли разумное решение сейчас. Добавил это как ответ. Примет это через 2 дня, если кто-то еще не придумал еще лучше. Спасибо за помощь!

Ответы на вопрос(6)

Ваш ответ на вопрос