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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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
Calendar objects can accommodate calendars with 13 months. For 12-month calendars, the empty string is always returned as the name of the 13th month.
Method 2
According to MSDN
Calendar objects can accommodate
calendars with 13 months. For 12-month
calendars, the empty string is always
returned as the name of the 13th
month.
Method 3
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.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0