Bawiłeam się metodą Datetime.ParseExact, wymaga ona IFormatProvider ...
Działa wprowadzanie wartości null, ale co dokładnie robi?
1 odpowiedź
Interfejs IFormatProvider jest zwykle dla Ciebie implementowany przez klasę CultureInfo
, np .:
- CultureInfo.CurrentCulture
- CultureInfo.CurrentUICulture
- CultureInfo.InvariantCulture
- CultureInfo.CreateSpecificCulture („de-CA”)
Interfejs jest bramą dla funkcji umożliwiającej uzyskanie zestawu danych specyficznych dla kultury z kultury. Dwa powszechnie dostępne obiekty kultury, o które można zapytać IFormatProvider, to:
-DateTimeFormatInfo -NumberFormatInfo Normalnie działałoby to w ten sposób, że poprosisz IFormatProvider o podanie obiektu DateTimeFormatInfo:
DateTimeFormatInfo format;
format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
if (format != null)
XYZ(format);
każdy interfejs IFormatProvider jest prawdopodobnie implementowany przez klasę, która pochodzi z CultureInfo lub z DateTimeFormatInfo, więc można rzutować interfejs bezpośrednio:
CultureInfo info = provider as CultureInfo;
if (info != null)
format = info.DateTimeInfo;
else
{
DateTimeFormatInfo dtfi = provider as DateTimeFormatInfo;
if (dtfi != null)
format = dtfi;
else
format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
}
if (format != null)
DoStuffWithDatesOrTimes(format);
Aby uzyskać DateTimeFormatInfo od IFormatProvider:
DateTimeFormatInfo format = DateTimeFormatInfo.GetInstance(provider);
Aby uzyskać NumberFormatInfo od IFormatProvider:
NumberFormatInfo format = NumberFormatInfo.GetInstance(provider);