Остальные ответы будут работать. Я просто хотел прокомментировать причину, по которой ваш код не работает. String.Format
предназначен для одновременного форматирования более 1 переменной. Вы можете использовать его, но синтаксис будет:
string str = String.Format("{0:Y}", dt);
надеюсь, это поможет. Спецификатор формата, который вы ищете, вероятно, "MMMM гггг", формат по умолчанию для "Y" - год-месяц, а не месяц-год.