Какова лучшая практика при работе с ограниченным диапазоном поддерживаемых значений DateTime? - PullRequest
6 голосов
/ 07 декабря 2011

В настоящее время я прохожу процесс глобализации для проекта (приложение .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, но с гораздо более смягченными минимальными и максимальными поддерживаемыми датами. С этой проблемой сталкиваются многие люди? Я не смог найти много советов по этому конкретному вопросу. Я не решаюсь просто изменить календарь по умолчанию, используемый в этих культурах, без каких-либо советов.

1 Ответ

1 голос
/ 10 марта 2012

Для достижения наилучших результатов при глобализации в целом строго придерживайтесь представления данных, инвариантного к культуре, во всех областях вашего приложения, кроме уровня представления (взаимодействие с человеком);и добавьте согласованный слой перевода на уровне представления для всего, что должно быть представлено человеку или было введено непосредственно человеком.

Относительно конкретных календарей: многие глобальные приложения строго придерживаются григорианского календаря (хотя видимое для человека форматирование, конечно, локализовано);некоторые поддерживают некоторые другие календари, которые имеют официальный статус в некоторых странах, но, опять же, это реализуется на уровне представления с минимальным воздействием на приложение и только тогда, когда становится реалистичным обратиться к этим рынкам или даже после развертывания производства врайон уже начался.

...