Javascript 金額、時間格式化

  一晃2017年已通過去了,2018年已經悄然而至。回首過去的2017年,工做仍是一如既往,但生活卻有了翻天覆地的變化。尚還以爲本身還小的本身,在過去的一年中卻完成了兩件人生大事,回想起來仍是一臉懵逼,好似經歷了不少,但有不知道從何提及的感受。至於工做和學習,這一年確實關注的比較少,天天都是正常的上班下班,偶爾也加加班,拿着一成不變的工資,恍恍惚惚的把2017年的工做幹完了。而技術層面的提高,自覺爲零,顧接下來的2018年該爲本身的技術作作提高了。html

  簡單的總結下逝去的一年,提起精神,作好計劃,充滿活力的迎接全新的2018。json

  做爲金融行業的程序開發,對於金額和時間的處理會比較多,因此今天就來簡單的總結下js中對於該兩種數據的格式化。函數

1、金額格式化學習

一、字符串轉換成數字this

  js提供了parseInt()和parseFloat()兩個轉換函數。前者把值轉換成整數,後者把值轉換成浮點數。僅僅有對String類型調用這些方法,這兩個函數才能正確執行;對其它類型返回的都是NaN(Not a Number)。spa

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

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

  parseInt("22.5"); //returns 22orm

  parseInt("blue"); //returns NaNhtm

 parseInt()方法還有基模式,可以把二進制、八進制、十六進制或其它不論什麼進制的字符串轉換成整數。基是由parseInt()方法的第二個參數指定的,示比例如如下:

  parseInt("AF", 16); //returns 175
  parseInt("10", 2); //returns 2
  parseInt("10", 8); //returns 8
  parseInt("10", 10); //returns 10
 
使用parseFloat()方法的還有一不一樣之處在於,字符串必須以十進制形式表示浮點數,parseFloat()沒有基模式。

二、數字轉爲千分符

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

三、數字轉爲以萬爲單位

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

四、轉換爲中文大寫金額

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 "";  
    }  
}  

2、時間格式化

一、js獲取當前時間

//獲取系統當前時間
var myDate = new Date();

二、轉爲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")

三、\/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

相關文章
相關標籤/搜索