如果我们使用ParseExact
方法对 完全 日期时间使用指定格式进行解析,为什么我们需要提供IFormatProvider对象?它背后的意义是什么?
例如:
DateTime.ParseExact(dateString, format, provider);
为什么我们需要provider
?
答案 0 :(得分:57)
为什么我们需要提供IFormatProvider对象?它背后的意义是什么?
它允许特定于文化的选项。特别是:
:
或/
,这分别表示时间分隔符或日期分隔符的特定于文化的字符作为最后一点的一个例子,请考虑在美国或沙特阿拉伯的文化中解释的相同的字符串和格式:
using System;
using System.Globalization;
class Test
{
static void Main()
{
CultureInfo us = new CultureInfo("en-US");
CultureInfo sa = new CultureInfo("ar-SA");
string text = "1434-09-23T15:16";
string format = "yyyy'-'MM'-'dd'T'HH':'mm";
Console.WriteLine(DateTime.ParseExact(text, format, us));
Console.WriteLine(DateTime.ParseExact(text, format, sa));
}
}
在使用美国文化进行分析时,会使用公历 - 而在使用沙特阿拉伯文化进行分析时,会使用Um Al Qura日历,其中1434是我们目前所在的年份(因为我写这个答案)