Верхний регистр "H" указывает на 24-часовое время, а нижний регистр "h" указывает на 12-часовое время и будет соблюдать AM/PM в строке кандидата.
Боковое примечание. Лучше всего предоставить экземпляр IFormatProvider для таких методов (даже если это просто CultureInfo.InvariantCulture). Это одна из тех вещей, которая на самом деле не имеет значения до тех пор, пока вы не столкнетесь с проблемами с ней, поэтому может быть полезно иметь привычку указывать информацию о культуре.
Вам нужно использовать строчный "h" для аргумента hour в строке формата. Верхний регистр "H" представляет собой 24-часовое время, поэтому "4" распознается как 4 часа ночи (так как "16" - это 4 часа дня).