GetMonthName: допустимые значения от 1 до 13 включительно. Зачем?
Я случайно передал 0 в DateTimeFormatInfo
"s GetMonthName
метод:
DateTimeFormatInfo info = new DateTimeFormatInfo();
var monthName = info.GetMonthName(0);
и получил System.ArgumentOutOfRangeException
с этим сообщением об ошибке: Допустимые значения от 1 до 13 включительно.
Передача с 1 по 12 возвращает "январь" на "декабрь", но передача 13 возвращает пустую строку.
Я понимаю, почему номера месяцев не индексируются нулями, но для чего нужен 13-й месяц?
3 ответа
Это потому, что объекты календаря могут вместить 13 месяцев (для обработки календарей на основе лунных месяцев), см. MSDN:
http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx
Календарные объекты могут вместить календари с 13 месяцами. Для 12-месячных календарей пустая строка всегда возвращается как имя 13-го месяца.
По данным MSDN
Календарные объекты могут вместить календари с 13 месяцами. Для 12-месячных календарей пустая строка всегда возвращается как имя 13-го месяца.
Я предполагаю, что он используется для определения високосного дня в юлианском календаре ( http://en.wikipedia.org/wiki/Julian_calendar). Так как чаще всего используют григорианский каландр, просто не переживайте.