如果已经有格式参数,为什么要在DateTime.ParseExact
中使用IFormatProvider
?
DateTime.ParseExact(inputString, format, cultureInfo);
format参数说明要使用什么模式,但它没有说明要使用哪个日历、月份名称、短日期格式等。这取决于IFormatProvider
。
例如,假设您想要使用模式"dd MMMM yyyy"
解析一个值——您希望使用哪些月份名称?如果你使用的月份名称为"二月",但你在系统区域性为法语的机器上运行,它会失败——你需要指定一个英语区域性(或不变区域性)才能使其工作。同样,您可以指定"d"
模式来表示短日期格式,但哪个短日期格式?
即使是您使用的日历也会受到格式提供程序的影响:在两种文化中,该值可以解析为相同的年、月和日值,但这些值的含义在回历中与格里高利日历中会大不相同。
一个简单的例子:/
/
不仅仅是一个字符,而是一个取决于区域性的日期分隔符。