I accidentally passed 0 into DateTimeFormatInfo
's GetMonthName
method:
DateTimeFormatInfo info = new DateTimeFormatInfo();
var monthName = info.GetMonthName(0);
and got a System.ArgumentOutOfRangeException
with this error message: Valid values are between 1 and 13, inclusive.
Passing in 1 through to 12 return "January" through to "December" but passing in 13 returns an empty string.
I can see why month numbers are not zero indexed, but what's month 13 for?
It's because calendar objects can accomodate 13 months (to handle calendars based on lunar months), see MSDN:
http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx
I guess it is used to determine the leap day in the julian calendar ( http://en.wikipedia.org/wiki/Julian_calendar ). As most of use use Gregorian calender just do not worry.
According to MSDN