В настоящее время я прохожу процесс глобализации для проекта (приложение .net mvc2), и глобализация для меня немного нова. Я заметил, что DateTime.ToString () , когда отформатирован для некоторых культур, может вызвать ArgumentOutOfRangeException для значений слишком далеко в прошлом или будущем. В частности, календари, используемые для «ar» и «ar-SA» ( UmAlQuraCalendar ), имеют очень ограниченные минимальные и максимальные поддерживаемые даты. При использовании UmAlQuraCalendar любая дата до апреля 1930 года или после мая 2029 года будет причиной этого. Это легко заметить:
DateTime.ParseExact("1900", "yyyy", CultureInfo.InvariantCulture).ToString("G", new CultureInfo("ar"));
Простите мое невежество по этому вопросу, но мне интересно, какова лучшая практика здесь. Мне бы хотелось, чтобы я мог представлять даты ранее 1930 года, не добавляя обработку исключений каждый раз, когда я печатаю дату, но я также хотел бы уважать культуру пользователя. Является ли лучший вариант здесь для переключения календарей для этих культур? Из некоторых поисков показывается, что опционально предоставляемый HijriCalendar очень похож на UmAlQuraCalendar, но с гораздо более смягченными минимальными и максимальными поддерживаемыми датами. С этой проблемой сталкиваются многие люди? Я не смог найти много советов по этому конкретному вопросу. Я не решаюсь просто изменить календарь по умолчанию, используемый в этих культурах, без каких-либо советов.