JS处理json日期格式化问题
起因
对于从C#返回的日期字段,当进行JSON序列化后,在前台JS里显示的并不是真正的日期,这让我们感觉很不爽,我们不可能为了这东西,把所有日期字段都变成string吧,所以,找了一个JS的扩展方法,来实现这个功能
实现
functionChangeDateFormat(jsondate){ jsondate=jsondate.replace("/Date(","").replace(")/",""); if(jsondate.indexOf("+")>0){ jsondate=jsondate.substring(0,jsondate.indexOf("+")); } elseif(jsondate.indexOf("-")>0){ jsondate=jsondate.substring(0,jsondate.indexOf("-")); } vardate=newDate(parseInt(jsondate,10)); varmonth=date.getMonth()+1<10?"0"+(date.getMonth()+1):date.getMonth()+1; varcurrentDate=date.getDate()<10?"0"+date.getDate():date.getDate(); returndate.getFullYear() +"年" +month +"月" +currentDate +"日" +"" +date.getHours() +":" +date.getMinutes(); } //调用:ChangeDateFormat(data[i].arrDate)
调用
$.ajax({ type:"Get", textType:"json", url:"/UserInfo/GetUserWithdraw", data:{id:id}, success:function(data){ varresult=html.replace(reg,function(node,key){ return{ 'Money':data.Money, 'AddTime':ChangeDateFormat(data.AddTime), 'CashTime':data.CashTime }[key]; }); TsingdaTips.ask({msg:result,show_btn:false,title:"提现申请详情"});//预计打款时间等于申请时音后的(5号或20号) } });
PS:返回的json时间如/Date(1290371638000)/形式,怎样处理成yyyy-MM-dd这类格式
去掉/Date
直接格式化1290371638000
/** *时间对象的格式化; */ Date.prototype.format=function(format){ /* *eg:format="YYYY-MM-ddhh:mm:ss"; */ varo={ "M+":this.getMonth()+1,//month "d+":this.getDate(),//day "h+":this.getHours(),//hour "m+":this.getMinutes(),//minute "s+":this.getSeconds(),//second "q+":Math.floor((this.getMonth()+3)/3),//quarter "S":this.getMilliseconds()//millisecond } if(/(y+)/.test(format)){ format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)); } for(varkino){ if(newRegExp("("+k+")").test(format)){ format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length)); } } returnformat; }
使用方法:
vartestDate=newDate(); vartestStr=testDate.format("YYYY年MM月dd日hh小时mm分ss秒"); alert(testStr);