Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities
To install Humanizer, run the following command in the Package Manager Console
PM> Install-Package Humanizer
Ordinalize turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th:
1.Ordinalize() => "1st"
5.Ordinalize() => "5th"
Then you can use:
String.Format("{0} {1:MMMM yyyy}", date.Day.Ordinalize(), date)