С MSDN (спецификатор пользовательского формата "h"):
Если спецификатор формата "h" используется без других пользовательских спецификаторов формата, он интерпретируется как стандартный спецификатор формата даты и времени и вызывает исключение FormatException. Дополнительные сведения об использовании одного спецификатора формата см. В разделе «Использование отдельных пользовательских спецификаторов формата» далее в этом разделе.
Вы можете использовать следующее (, как описано в разделе «Использование отдельных пользовательских форматных спецификаторов)»:
Чтобы использовать любой из пользовательских спецификаторов формата даты и времени в качестве единственного спецификатора в строке формата (то есть использовать "d", "f", "F", "g", "h", " H "," K "," m "," M "," s "," t "," y "," z ",": "или" / "спецификатор пользовательского формата самостоятельно), включают пробел перед или после спецификатора, или включать спецификатор формата в процентах ("%") перед единичным пользовательским спецификатором даты и времени.
Итак, вы можете сделать следующее:
DateTime test= DateTime.Now;
Console.WriteLine(test.ToString("{0:%h}")); // From the document, adds precision
Console.WriteLine(test.ToString("%h")); // Will also work