数字日期转化为汉字日期格式

<html>
<script>
    /*   功能:YYYY-MM-DD 数字日期转化为汉字   
    例:1984-3-7 -> 一九八四年三月七日   
    调用:baodate2chinese("1984-3-7")
    */
    var chinese = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    var len = ['十'];
    var ydm = ['年', '月', '日'];
    function num2chinese(s) {
        //将单个数字转成中文.
        s = "" + s;
        slen = s.length;
        var result = "";
        for (var i = 0; i < slen; i++) {
            result += chinese[s.charAt(i)];
        }
        return result;
    }

    function n2c(s) {
        //对特殊情况进行处理.    
        s = "" + s;
        var result = "";
        if (s.length == 2) {
            if (s.charAt(0) == "1") {
                if (s.charAt(1) == "0") return len[0];
                return len[0] + chinese[s.charAt(1)];
            }
            if (s.charAt(1) == "0") return chinese[s.charAt(0)] + len[0];
            return chinese[s.charAt(0)] + len[0] + chinese[s.charAt(1)];
        }
        return num2chinese(s)
    }

    function baodate2chinese(s) {
        //验证输入的日期格式.并提取相关数字.    
        var datePat = /^(\d{2}|\d{4})(\/|-)(\d{1,2})(\2)(\d{1,2})$/;
        var matchArray = s.match(datePat);
        var ok = "";
        if (matchArray == null) return false;
        for (var i = 1; i < matchArray.length; i = i + 2) {
            ok += n2c(matchArray[i] - 0) + ydm[(i - 1) / 2];
        }
        return ok;
    }
</script>

<body>
    YYYY-MM-DD:
    <input type="text" name="mydate" value="2012-04-05">
    中文显示:
    <input type="text" name="okdate">
    <input type="button" οnclick="document.all.okdate.value=baodate2chinese(document.all.mydate.value)"
        value="转换"> 
</body>
</html>
C# 代码
/// <summary>
    /// 数字日期转换成中文日期
    /// </summary>
    /// <param name="strDate">日期</param>
    /// <returns></returns>
    public string changeDate(string strDate)
    {
        char[] strChinese;
        strChinese = new char[] { '〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十' };
        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
        //{
        //    return "";
        //}
        return result.ToString();
    } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值