#c# #asp.net #datetime #datetimeformatinfo
#c# #asp.net #дата и время #datetimeformatinfo
Вопрос:
Я случайно передал 0 в DateTimeFormatInfo
метод GetMonthName
:
DateTimeFormatInfo info = new DateTimeFormatInfo();
var monthName = info.GetMonthName(0);
и получил System.ArgumentOutOfRangeException
такое сообщение об ошибке: допустимые значения находятся в диапазоне от 1 до 13 включительно.
Передача с 1 по 12 возвращает «Январь» по «Декабрь», но передача с 13 возвращает пустую строку.
Я могу понять, почему номера месяцев не индексируются на ноль, но для чего нужен месяц 13?
Комментарии:
1. Чисто предположение, однако в лунных календарях (например, еврейских) високосный месяц вставляется каждые столько-то лет из-за значительно более коротких месяцев.
2. О, и если сегодня пятница, 13-е число 13-го месяца, даже не включайте свой компьютер.
3. @leppie Обратите внимание, что календари и даты — скользкий путь, поэтому ваш «интересный»… осторожно, здесь есть драконы 🙂
4. @Лассе В. Карлсен: Я стараюсь избегать любых разговоров, содержащих слова ‘posix time’; p
5. Очевидно, что это для недооцененного месяца додекабря.
Ответ №1:
Это потому, что объекты календаря могут вместить 13 месяцев (для обработки календарей на основе лунных месяцев), см. MSDN:
http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx
Объекты календаря могут содержать календари с 13 месяцами. Для 12-месячных календарей пустая строка всегда возвращается как название 13-го месяца.
Ответ №2:
Согласно MSDN
Объекты календаря могут содержать календари с 13 месяцами. Для 12-месячных календарей пустая строка всегда возвращается как название 13-го месяца.
Ответ №3:
Я предполагаю, что это используется для определения високосного дня в юлианском календаре ( http://en.wikipedia.org/wiki/Julian_calendar ). Поскольку в большинстве случаев используется григорианский календарь, просто не волнуйтесь.
Комментарии:
1. -1: Нет, это ios для лунных календарей, которые время от времени добавляют дополнительный месяц, чтобы избежать слишком большого отклонения от солнечного года.