如果已经有格式参数了,为什么在 DateTime.ParseExact 中我们还需要使用 IFormatProvider 呢? DateTime.ParseExact(inputString, format, cultureInfo);
格式参数指定了要使用的模式,但并不涉及日历、月份名称、短日期格式等内容。这些由IFormatProvider决定。例如,假设您想要解析具有模式“dd MMMM yyyy”的值-您期望哪些月份名称可以使用?如果您使用的是2月份的月份名称,但正在运行系统文化为法语的机器上,将会失败-您需要指定英语文化(或不变文化)才能使其工作。同样,您可以指定一个“d”模式来表示短日期格式,但是使用哪种短日期格式呢?甚至您使用的日历也会受到格式提供程序的影响:在两种文化中,该值可能被解析为相同的年、月和日值,但在伊斯兰教历和公历之间,这些值的含义差别很大。