如何在DateTime.ParseExact中使用IFormatProvider

4

如果已经有格式参数了,为什么在 DateTime.ParseExact 中我们还需要使用 IFormatProvider 呢?


DateTime.ParseExact(inputString, format, cultureInfo);
2个回答

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

@Ahmedilyas:我对日期和时间非常感兴趣,这很有帮助 :) - Jon Skeet
是的,我有时也有这种感觉......不要让我开始谈客户和他们的需求、客户端计算和不同地区的问题了....呃! :) - Ahmed ilyas

1
一个简单的例子:/ / 不仅仅是一个字符,而是一个依赖于文化的日期分隔符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接