注意DateTime的IFormatProvider
DateTime.ToString()是大家常用的方法
正常情况下,.net会自动获取系统的语言来输出日期,但是有时这个不适用,有时服务器是日文的,我们却想输出中文日期,这时就需要使用IFormatProvider了
东西比较简单,看一下就明白了
DateTime tDate = DateTime.Now; System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP"); string strDate = tDate.ToString("yyyy/MM/dd (dddd)", culture);
来看个微软的DEMO(有修改)
// Specify the date to be formatted using various cultures. DateTime tDate = DateTime.Now; // Specify the cultures. string[] cultureNames = { "en-US", "es-AR", "fr-FR","ja-JP", "nl-NL", "ru-RU","zh-TW","zh-CN"}; Console.WriteLine("Converting the date {0}: ",Convert.ToString(tDate,System.Globalization.CultureInfo.InvariantCulture)); foreach (string cultureName in cultureNames) { System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(cultureName); string dateString = tDate.ToString("yyyy/MM/dd(dddd) hh:mm:ss tt zzz", culture); Console.WriteLine(" {0}: {1}",culture.Name, dateString); }
输出结果
Converting the date 10/09/2011 11:35:57: en-US: 2011/10/09(Sunday) 11:35:57 AM +08:00 es-AR: 2011/10/09(domingo) 11:35:57 a.m. +08:00 fr-FR: 2011/10/09(dimanche) 11:35:57 +08:00 ja-JP: 2011/10/09(日曜日) 11:35:57 午前 +08:00 nl-NL: 2011-10-09(zondag) 11:35:57 +08:00 ru-RU: 2011.10.09(воскресенье) 11:35:57 +08:00 zh-TW: 2011/10/09(星期日) 11:35:57 上午 +08:00 zh-CN: 2011/10/09(星期日) 11:35:57 上午 +08:00 続行するには何かキーを押してください . . .