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). Так как чаще всего используют григорианский каландр, просто не переживайте.

Другие вопросы по тегам