GetMonthName: допустимые значения от 1 до 13 включительно. Зачем? - PullRequest
11 голосов
/ 13 мая 2011

Я случайно передал 0 в DateTimeFormatInfo GetMonthName метод:

DateTimeFormatInfo info = new DateTimeFormatInfo();
var monthName = info.GetMonthName(0);

и получил System.ArgumentOutOfRangeException с этим сообщением об ошибке: Допустимые значения от 1 до 13 включительно.

Передача с 1 по 12 возвращает «январь» на «декабрь», но передача 13 возвращает пустую строку.

Я понимаю, почему номера месяцев не индексируются нулями, но для чего нужен 13-й месяц?

Ответы [ 3 ]

12 голосов
/ 13 мая 2011

Это потому, что объекты календаря могут вместить 13 месяцев (для обработки календарей на основе лунных месяцев), см. MSDN:

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx

Объекты календаря могут вместить календари с 13 месяцами,Для 12-месячных календарей пустая строка всегда возвращается как имя 13-го месяца.

7 голосов
/ 13 мая 2011

Согласно MSDN

Календарные объекты могут вместить календари с 13 месяцами.Для 12-месячных календарей пустая строка всегда возвращается как имя 13-го месяца.

0 голосов
/ 13 мая 2011

Полагаю, он используется для определения високосного дня в юлианском календаре (http://en.wikipedia.org/wiki/Julian_calendar).Так как чаще всего используют григорианский каландр, просто не волнуйтесь.

...