据客户要求,把"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"));
        }

    }

}

posted on 2008-01-10 00:02  Aikon  阅读(156)  评论(0编辑  收藏  举报