Как использовать IFormatProvider в DateTime.ParseExact
Почему мы должны использовать IFormatProvider
в DateTime.ParseExact
если уже есть параметр формата?
DateTime.ParseExact(inputString, format, cultureInfo);
2 ответа
Параметр format указывает, какой шаблон использовать, но ничего не говорит о том, какой календарь, названия месяцев, краткий формат даты и т. Д. Использовать. Это до IFormatProvider
,
Например, предположим, что вы хотите проанализировать значение с шаблоном "dd MMMM yyyy"
- Какие названия месяцев вы ожидаете работать? Если вы используете название месяца "Февраль", но вы работаете на машине с системной культурой французского языка, она потерпит неудачу - вам потребуется указать английскую культуру (или инвариантную культуру), чтобы получить ее Работа. Точно так же вы можете указать шаблон "d"
означать формат короткой даты - но какой формат короткой даты?
Даже на используемый вами календарь влияет поставщик формата: значение может быть проанализировано в одинаковые значения года, месяца и дня в двух культурах, но значение этих значений в хиджри-календаре будет сильно отличаться от григорианского, пример.
Простой пример: /
/
это не просто символ, а разделитель даты, который зависит от культуры.