日期轉換為中文大寫數字


動手寫一個轉換日期的小方法,雖然很短,但是需要考慮的東西還是挺多的,記錄一下。

 

 /// <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
    }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM