Он просто не хочет работать:
DateTime time;
DateTime.TryParseExact("17", "HH", ..., out time);
// works fine
DateTime.TryParseExact("9", "HH", ..., out time);
// works fine, but 9 doesn't match HH (nor should it)
DateTime.TryParseExact("9:", "H':'", ..., out time);
// works fine
DateTime.TryParseExact("9", "H", ..., out time);
// exception: "Input string was not in a correct format"
Тот факт, что # 3 работает, предлагает очевидный обходной путь, но это одна из тех вещей, которые заставили бы меня пойти "WTF", если явидел это в чужом коде.TryParseExact
глючит что ли?