clith

最坚强的蜗牛~

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

动手写一个转换日期的小方法,虽然很短,但是需要考虑的东西还是挺多的,记录一下。

 

 /// <summary>
    /// 将日期转换为中文大写
    /// 如:一九八三 十一 二十七
    /// </summary>
    public class ChineseNumberHelper
    {
        static Dictionary<int, string> _theNumOfChineseCapital = new Dictionary<int, string>() 
        {
            {0,""},
            {1,""},
            {2,""},
            {3,""},
            {4,""},
            {5,""},
            {6,""},
            {7,""},
            {8,""},
            {9,""},
            {10,""}
        };

        public static string ConverToString(object number, NumberType numType)
        {
            var input = Convert.ToString(number);
            int validateInt;
            if (string.IsNullOrWhiteSpace(input) || !int.TryParse(input, out validateInt))
                throw new ArgumentException("number");

            if (validateInt == 0)
                throw new ArgumentException("number");

            //更多验证 如果是年 月 日的输入


            if ((numType == NumberType.Day || numType == NumberType.Day) && input.Length == 2)
                input = input.TrimStart('0');

            StringBuilder outPut = new StringBuilder();
            switch (numType)
            {
                case NumberType.Year:
                    for (int i = 0; i < input.Length; i++)
                    {
                        var intVal = Convert.ToInt32(input[i].ToString());
                        outPut.Append(_theNumOfChineseCapital[intVal]);
                    }
                    break;
                case NumberType.Moth:
                case NumberType.Day:
                    if (validateInt < 10)
                    {
                        outPut.Append(_theNumOfChineseCapital[Convert.ToInt32(input[0].ToString())]);
                    }
                    else if (validateInt == 10)
                    {
                        outPut.Append(_theNumOfChineseCapital[validateInt]);
                    }
                    else
                    {
                        if (validateInt > 19)
                            outPut.Append(_theNumOfChineseCapital[Convert.ToInt32(input[0].ToString())]);
                        outPut.Append(_theNumOfChineseCapital[10]);
                        if (input[1] != '0')
                            outPut.Append(_theNumOfChineseCapital[Convert.ToInt32(input[1].ToString())]);
                    }
                    break;
            }

            return outPut.ToString();
        }
    }

    public enum NumberType
    {
        Year,
        Moth,
        Day
    }

 

 

posted on 2015-01-16 11:14  capad  阅读(3535)  评论(0编辑  收藏  举报