Echa un vistazo a humanizr:
https://github.com/Humanizr/Humanizer#date-time-to-ordinal-words
new DateTime(2015, 1, 1).ToOrdinalWords() => "1st January 2015"
new DateTime(2015, 2, 12).ToOrdinalWords() => "12th February 2015"
new DateTime(2015, 3, 22).ToOrdinalWords() => "22nd March 2015"
new DateTime(2015, 1, 1).ToOrdinalWords() => "January 1st, 2015"
new DateTime(2015, 2, 12).ToOrdinalWords() => "February 12th, 2015"
new DateTime(2015, 3, 22).ToOrdinalWords() => "March 22nd, 2015"
Inmediatamente después de publicar esto, me di cuenta de que @Gumzle sugirió lo mismo, pero me perdí su publicación porque estaba enterrada en fragmentos de código. Entonces, esta es su respuesta con suficiente código para que alguien (como yo) que se desplaza rápidamente pueda verlo.