技术开发 频道

C#中数字日期转中文日期


【IT168技术文档】
//据客户要求,把"2007-11-4"转换为"二〇〇七年十一月四号" using System; using System.Text; using System.Text.RegularExpressions; namespace AndyDateConvert { class DateConvert { private static DateConvert m_DateConvert = null; private char[] strChinese; private DateConvert() { strChinese = new char[] { '','','','','','','','','','','' }; } public static DateConvert Instance { get { if (m_DateConvert == null) m_DateConvert = new DateConvert(); return m_DateConvert; } } public string Baodate2Chinese(string strDate) { StringBuilder result = new StringBuilder(); // 依据正则表达式判断参数是否正确 Regex theReg = new Regex(@"(d{2}|d{4})(/|-)(d{1,2})(/|-)(d{1,2})"); if (theReg.Match(strDate).Length != 0) { // 将数字日期的年月日存到字符数组str中 string[] str = null; if (strDate.Contains("-")) { str = strDate.Split('-'); } else if (strDate.Contains("/")) { str = strDate.Split('/'); } // str[0]中为年,将其各个字符转换为相应的汉字 for (int i = 0; i < str[0].Length; i++) { result.Append(strChinese[int.Parse(str[0][i].ToString())]); } result.Append(""); // 转换月 int month = int.Parse(str[1]); int MN1 = month / 10; int MN2 = month % 10; if (MN1 > 1) { result.Append(strChinese[MN1]); } if (MN1 > 0) { result.Append(strChinese[10]); } if (MN2 != 0) { result.Append(strChinese[MN2]); } result.Append(""); // 转换日 int day = int.Parse(str[2]); int DN1 = day / 10; int DN2 = day % 10; if (DN1 > 1) { result.Append(strChinese[DN1]); } if (DN1 > 0) { result.Append(strChinese[10]); } if (DN2 != 0) { result.Append(strChinese[DN2]); } result.Append(""); } else { throw new ArgumentException(); } return result.ToString(); } static void Main(string[] args) { Console.WriteLine(DateConvert.Instance.Baodate2Chinese("2007-11-4")); Console.WriteLine(DateConvert.Instance.Baodate2Chinese("07-11-4")); Console.WriteLine(DateConvert.Instance.Baodate2Chinese("2007/11/4")); Console.WriteLine(DateConvert.Instance.Baodate2Chinese("07/11/4")); } } }
0
相关文章