C#日期格式化方法中IFormatProvider怎么用

发布时间:2019-08-08 00:17:56

C#日期格式化方法中IFormatProvider怎么用

推荐回答

Well,IFormatProvider接口是一个格式化提供者,它仅仅提供一个承诺,它告诉编译器实现该了接口的类会提供具体的格式化,而真正的格式化接口是ICustomFormatter接口。所以自定义化格式化日期,我会这样子做:

12345678910111213141516171819202122232425262728293031323334353637  class Program    {        static void Main(string[] args)        {            String format = String.Format(new MyFormatProvider(), "{0:CN}", DateTime.Now);            Console.WriteLine(format);        }    }     class MyFormatProvider : IFormatProvider    {        public object GetFormat(Type formatType)        {            if (formatType == typeof(ICustomFormatter))            {                return new MyCustomFormatter();            }             return CultureInfo.CurrentCulture.GetFormat(formatType);        }    }     class MyCustomFormatter : ICustomFormatter    {        public string Format(string format, object arg, IFormatProvider formatProvider)        {            if (arg is DateTime)            {                DateTime dt=(DateTime)arg;                // CN-中国,UK-英国,US-美国。这里仅仅是一个示例。具体用法根据实际情况而定                if (format == "CN") return String.Format("{0}年{1}月{2}日", dt.Year,dt.Month.ToString("##"),dt.Day);                if (format == "UK") return String.Format("{0}/{1}/{2}", dt.Day ,dt.Month.ToString("##"),dt.Year);            }             return String.Format("Non-Formatter{0}", format);        }    }
以上问题属网友观点,不代表本站立场,仅供参考!