一晃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

Javascript 金额、时间格式化的更多相关文章

  1. JavaScript日期时间格式化函数

    这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...

  2. JavaScript 对时间日期格式化

    JavaScript 对时间日期格式化 // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位 ...

  3. javascript 时间格式化

    添加扩展 //时间格式化扩展Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1 ...

  4. javascript 时间格式化方法

    对jquery进行扩展的方法: //对时间格式化(jquery方法扩展) Date.prototype.Format = function (fmt) { //author: meizz var o ...

  5. js 时间格式化 -- 时间加减实现

    时间格式化的方法: Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.ge ...

  6. javascript实例——时间日期篇(包含5个实例)

    本来想在网上找一些js实例来练练手,结果发现一本书<突破JavaScript编程实例五十讲>,看了下内容还不错,就下了下来: 后面又下了该书籍的源码,一看才发现这本书编的日期是2002年的 ...

  7. Javascript日期时间总结

    写这篇文章,总结一下前端JavaScript遇到的时间格式处理. 1 C#时间戳处理 从后台返回的C#时间为:/Date(-62135596800000)/,这个是C#的DateTime.MinVal ...

  8. Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

    一.字符串输出及运算 1.常用输出格式及方法 ')#单引号 ")#双引号 """)#三个引号 1234567890 1234567890 1234567890 ...

  9. JavaScript 金额、数字、千分位、千分位、保留几位小数、舍入舍去、支持负数

    JavaScript 金额.数字 千分位格式化.保留指定位数小数.支持四舍五入.进一法.去尾法 字段说明: number:需要处理的数字: decimals:保留几位小数,默认两位,可不传: dec_ ...

随机推荐

  1. pselect 函数

    <unix网络环境编程> 中20-7 的示例理解. #include "unp.h" static void recvfrom_alarm(int); void dg_ ...

  2. Spring 系列教程之默认标签的解析

    Spring 系列教程之默认标签的解析 之前提到过 Spring 中的标签包括默认标签和自定义标签两种,而两种标签的用法以及解析方式存在着很大的不同,本章节重点带领读者详细分析默认标签的解析过程. 默 ...

  3. css字符串转换为类map对象及反转

    存储对象为啥是类map(即:{key:val,...}格式),因为Map对象的val为字符时,无法存储 '('.')' 左右括号,我也很无奈╮(╯▽╰)╭ 解析脚本: <!DOCTYPE htm ...

  4. unity中的构造函数

    避免使用构造函数 不要在构造函数中初始化任何变量,使用Awake或Start实现这个目的.即使是在编辑模式中Unity也自动调用构造函数,这通常发生在一个脚本被编译之后,因为需要调用构造函数来取向一个 ...

  5. 2019.01.14 bzoj2752: [HAOI2012]高速公路(线段树)

    传送门 线段树菜题. 题意简述:给一条nnn个点的链,链有边权,支持区间修改边权,查询在一段区间内随机选择不同的起点和终点路径的期望总边权和. 思路:考虑每条边的贡献. 考虑对于一段区间[l,r][l ...

  6. 2018.06.27"Shortest" pair of paths(费用流)

    "Shortest" pair of paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1589 A ...

  7. springboot Thymeleaf 整合

    Thymeleaf是一个Java模板引擎开发库,可以处理和生成HTML.XML.JavaScript.CSS和文本,在Web和非Web环境下都可以正常工作. Thymeleaf可以跟Spring bo ...

  8. 分分钟搞懂rank() over(partition by)的使用

    一.rank() over(partition by ...order by) 解释:partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组. 二.语法:ROW_NUM ...

  9. s5-10 路由

    路由器转发分组的依据 路由表 路由表从何而来 直连路由.静态路由.动态路由 路由器收到一个分组之后-  打开分组L3,提取出目的IP地址  确定目标网络,查找路由表 按位"AND&quo ...

  10. load data妙用

    load变量和用户变量的巧妙结合,实现灵活导入字段列(NO.1) LOAD DATA INFILE 'file.csv' INTO TABLE dados_meteo (@var1, @var2) S ...