C# DateTime.ToString根据不同语言生成相应的时间格式

2019-12-30 11:55:36王旭
本文分享了一个按照不同国家的语言生成相应时间格式的案例,有需要做国外网站或者多国语言网站的朋友可以参考一下。  

我想大家对DateTime.ToString()方法的用法肯定已经非常熟悉了,但我想大家用过的大部分用法都是:DateTime.ToString(“format”),不过本文想讲述的是它的另一个重载方法DateTime.ToString("format",IFormatProvider)。

如果大家做的项目中有多语言的需求的话,那么肯定少不了会有的功能要显示一个时间,由于文差异域每种语言用户对时间格式的需求肯定是不一样的,比如英文中的时间格式是:12/2/2013 8:20:22 PM,而德语的格式是:02.12.2013 20:20:22;这个区别还是很大的,而且如果语言种数多的话,也很难对每种特定语言的时间格式作特定的处理,而且也不利于程序的扩展性。不过万幸的是微软给我们提供了CultureInfo这个类,同时这个类继承了IFormatProvider这个接口,所以我们可以利用它来得到我们想要的时间格式(其它格式也可以通过它来获取,比哪货币等)。

闲话不多说,直接看代码:


Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn");
DateTime dt = Convert.ToDateTime("2013-12-2 20:20:22");

Console.WriteLine("当前语言:" + Thread.CurrentThread.CurrentCulture.DisplayName);
Console.WriteLine("日期:2013-12-2 20:20:22");
Console.WriteLine("d-短日期模式:  " + dt.ToString("d", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("D-长日期模式:  " + dt.ToString("D", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("f-完整日期/时间模式(短时间):  " + dt.ToString("f", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("F-完整日期/时间模式(长时间):  " + dt.ToString("F", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("g-常规日期/时间模式(短时间):  " + dt.ToString("g", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("G-常规日期/时间模式(长时间):  " + dt.ToString("G", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("m-月日模式(m):  " + dt.ToString("m", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("M-月日模式(M):  " + dt.ToString("M", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("o-往返日期/时间模式:  " + dt.ToString("o", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("R-RFC1123 模式:  " + dt.ToString("R", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("s-可排序的日期/时间模式;符合 ISO 8601:  " + dt.ToString("s", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("t-短时间模式:  " + dt.ToString("t", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("T-长时间模式:  " + dt.ToString("T", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("u-通用的可排序日期/时间模式:  " + dt.ToString("u", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("U-通用的可排序日期/时间模式:  " + dt.ToString("U", Thread.CurrentThread.CurrentCulture));
Console.WriteLine("Y-年月模式:  " + dt.ToString("Y", Thread.CurrentThread.CurrentCulture));

Console.WriteLine(dt.ToString("yyyyMMdd"));
Console.ReadLine();