zoukankan      html  css  js  c++  java
  • Javascript 金额、时间格式化

      一晃2017年已经过去了,2018年已经悄然而至。回首过去的2017年,工作还是一如既往,但生活却有了翻天覆地的变化。尚还觉得自己还小的自己,在过去的一年中却完成了两件人生大事,回想起来还是一脸懵逼,好似经历了很多,但有不知道从何说起的感觉。至于工作和学习,这一年确实关注的比较少,每天都是正常的上班下班,偶尔也加加班,拿着一成不变的工资,恍恍惚惚的把2017年的工作干完了。而技术层面的提升,自觉为零,顾接下来的2018年该为自己的技术做做提升了。

      简单的总结下逝去的一年,提起精神,做好计划,充满活力的迎接全新的2018。

      作为金融行业的程序开发,对于金额和时间的处理会比较多,所以今天就来简单的总结下js中对于该两种数据的格式化。

    一、金额格式化

    1、字符串转换成数字

      js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。仅仅有对String类型调用这些方法,这两个函数才能正确执行;对其它类型返回的都是NaN(Not a Number)。

      parseInt("1234blue"); //returns 1234

      parseInt("0xA"); //returns 10

      parseInt("22.5"); //returns 22

      parseInt("blue"); //returns NaN

     parseInt()方法还有基模式,能够把二进制、八进制、十六进制或其它不论什么进制的字符串转换成整数。基是由parseInt()方法的第二个參数指定的,示比例如以下:

      parseInt("AF", 16); //returns 175
      parseInt("10", 2); //returns 2
      parseInt("10", 8); //returns 8
      parseInt("10", 10); //returns 10
     
    使用parseFloat()方法的还有一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。

    2、数字转为千分符

    function rendererZhMoney(v) {  
        if(isNaN(v)){  
            return v;  
        }  
        v = (Math.round((v - 0) * 100)) / 100;  
        v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v  
                + "0" : v);  
        v = String(v);  
        var ps = v.split('.');  
        var whole = ps[0];  
        var sub = ps[1] ? '.' + ps[1] : '.00';  
        var r = /(d+)(d{3})/;  
        while (r.test(whole)) {  
            whole = whole.replace(r, '$1' + ',' + '$2');  
        }  
        v = whole + sub;  
          
        return v;  
    }  

    3、数字转为以万为单位

    function rendererZhMoneyWan(v) {  
        if(isNaN(v)){  
            return v;  
        }  
        v = v*0.0001;//10000;  
        v = formatFloat(v,0);//parseInt(v);  
        rendererZhMoney(v);  
        return v;  
    }  

    4、转换为中文大写金额

    function toBigMoney(value)
    {  
        var intFen,i;  
        var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;  
        var isFu =  false; //是否为负数  
      
        if(value.trim==""){  
            return "零";  
        }  
        strCheck = value+".";  
        strArr = strCheck.split(".");  
        strCheck = strArr[0];  
        var len = strCheck.length ;  
        var valueFunc = value+""; //  
        if(len > 12){  
            Ext.MessageBox.alert("提示","数据"+value+"过大,无法处理!");  
            return "";  
        }  
        try{  
            i = 0;  
            strBig = "";  
            if(valueFunc.indexOf("-") != -1){  //如果为负数  
                isFu = true;  
                valueFunc = valueFunc.substring(1,valueFunc.length);  
                value = valueFunc;  
            }  
            var s00="00";  
            var svalue = value+"";  
            var ipos = svalue.indexOf(".") ;  
            var iiLen = svalue.length;  
            if(ipos<0){  
                strFen = svalue+"00";  
            }else if(ipos==iiLen-2){  
                strFen = svalue.substring(0,iiLen-2)+svalue.substring(iiLen-1,iiLen)+"0";  
            }else if(ipos==iiLen-3){  
                strFen = svalue.substring(0,iiLen-3)+svalue.substring(iiLen-2,iiLen);  
            }else{  
                strFen = svalue.substring(0,ipos)+svalue.substring(ipos+1,ipos+3);  
            }  
            intFen = strFen.length;  
            strArr = strFen.split("");  
            while(intFen!=0){  
                i = i+1;  
                switch(i){  
                    case 1:strDW = "分";break;  
                    case 2:strDW = "角";break;  
                    case 3:strDW = "元";break;  
                    case 4:strDW = "拾";break;  
                    case 5:strDW = "佰";break;  
                    case 6:strDW = "仟";break;  
                    case 7:strDW = "万";break;  
                    case 8:strDW = "拾";break;  
                    case 9:strDW = "佰";break;  
                    case 10:strDW = "仟";break;  
                    case 11:strDW = "亿";break;  
                    case 12:strDW = "拾";break;  
                    case 13:strDW = "佰";break;  
                    case 14:strDW = "仟";break;  
                }  
                switch (strArr[intFen-1]){  
                    case "1":strNum = "壹";break;  
                    case "2":strNum = "贰";break;  
                    case "3":strNum = "叁";break;  
                    case "4":strNum = "肆";break;  
                    case "5":strNum = "伍";break;  
                    case "6":strNum = "陆";break;  
                    case "7":strNum = "柒";break;  
                    case "8":strNum = "捌";break;  
                    case "9":strNum = "玖";break;  
                    case "0":strNum = "零";break;  
                }  
      
                strNow = strBig.split("");  
                if((i==1)&&(strArr[intFen-1]=="0")){  
                    strBig = strBig+"整" ;  
                } else if((i==2)&&(strArr[intFen-1]=="0")){  
                    if(strBig!="整")  
                        strBig = "零"+strBig;  
                }else if((i==3)&&(strArr[intFen-1]=="0")){  
                    strBig = "元"+strBig;  
                }else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元")){  
                    strBig = "零"+strBig;  
                }else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}  
                else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元")){}  
                else if((i==7)&&(strArr[intFen-1]=="0")){  
                    strBig ="万"+strBig;  
                }else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万")){  
                    strBig = "零"+strBig;  
                }else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万")){}  
                else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}  
                else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){  
                    strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);  
                }else if(i==11){  
                    if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){  
                        strBig ="亿"+"零"+strBig.substring(1,strBig.length);  
                    }else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟")){  
                        strBig ="亿"+strBig.substring(1,strBig.length);  
                    }else if((strNow[0]=="万")&&(strNow[2]=="仟")){  
                        strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);  
                    }else if((strNow[0]=="万")&&(strNow[2]!="仟")){  
                        strBig = strNum+strDW+strBig.substring(1,strBig.length);  
                    }else {  
                        strBig = strNum+strDW+strBig;  
                    }  
                }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿")){  
                    strBig = "零"+strBig;  
                }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿")){  
                }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){  
                }else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟")){  
                    strBig = strNum+strDW+strBig.substring(1,strBig.length);  
                }else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟")){  
                    strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);  
                }else{  
                    strBig = strNum+strDW+strBig;  
                }  
                strFen = strFen.substring(0,intFen-1);  
                intFen = strFen.length;  
                strArr = strFen.split("");  
            }   
            if(strBig.substring(0,1)=="元")strBig=strBig.substring(1)  
            if(strBig.substring(0,1)=="零")strBig=strBig.substring(1)   
            if(strBig=="整") {strBig="零元整";}   
            if(true == isFu){ //如果为负数  
                strBig = "负"+strBig;  
            }  
            return strBig;  
        }catch(err){  
            alert(err);  
            return "";  
        }  
    }  

    二、时间格式化

    1、js获取当前时间

    //获取系统当前时间
    var myDate = new Date();

    2、转为yyyy-MM-dd hh:mm:ss

    Date.prototype.pattern = function (fmt) 
    {
                var o = {
                    "M+": this.getMonth() + 1, //月份
                    "d+": this.getDate(), //
                    "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
                    "H+": this.getHours(), //小时
                    "m+": this.getMinutes(), //
                    "s+": this.getSeconds(), //
                    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
                    "S": this.getMilliseconds() //毫秒
                };
                var week = {
                    "0": "/u65e5",
                    "1": "/u4e00",
                    "2": "/u4e8c",
                    "3": "/u4e09",
                    "4": "/u56db",
                    "5": "/u4e94",
                    "6": "/u516d"
                };
                if (/(y+)/.test(fmt)) {
                    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
                }
                if (/(E+)/.test(fmt)) {
                    fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[this.getDay() + ""]);
                }
                for (var k in o) {
                    if (new RegExp("(" + k + ")").test(fmt)) {
                        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                    }
                }
                return fmt;
    }

    调用方式:**
    .pattern("yyyy-MM-dd hh:mm:ss")

    3、/Date(1234656000000)/(微软json序列化是默认的时间格式)转为正常格式

    var datetimetostring = function (value) 
    {
        var d = eval('new ' + (value.replace(///g, '')));
        return d;
    }

    友情链接: http://www.cnblogs.com/milo-xie/archive/2012/04/24/2468660.html

  • 相关阅读:
    每日一博文
    用flash builder创建手机项目以及发布app需要注意的细节
    用xml配置加载cs中为ActionScript导出的类
    cs里面层,帧的处理方法
    一个项目要被自己加载的swf的项目调用方法
    App调用Android设备本地相机拍照并保存到本地相册
    让SWF文件从原始保存位置拿出来到任意位置都可以播放的设置
    记事
    一个主项目调用被加载的小游戏SWF项目的方法
    从一个App退出,关闭app
  • 原文地址:https://www.cnblogs.com/zhanghaomars/p/8194333.html
Copyright © 2011-2022 走看看