javascript日期格式化方法汇总
方法一:
//对Date的扩展,将Date转化为指定格式的String //月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q)可以用1-2个占位符, //年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字) //例子: //(newDate()).Format("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423 //(newDate()).Format("yyyy-M-dh:m:s.S")==>2006-7-28:9:4.18 Date.prototype.Format=function(fmt){//author:meizz varo={ "M+":this.getMonth()+1,//月份 "d+":this.getDate(),//日 "h+":this.getHours(),//小时 "m+":this.getMinutes(),//分 "s+":this.getSeconds(),//秒 "q+":Math.floor((this.getMonth()+3)/3),//季度 "S":this.getMilliseconds()//毫秒 }; if(/(y+)/.test(fmt))fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)); for(varkino) if(newRegExp("("+k+")").test(fmt))fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length))); returnfmt; }
调用方式:
vartime1=newDate().Format("yyyy-MM-dd");
vartime2=newDate().Format("yyyy-MM-ddHH:mm:ss");
方法二:
<scriptlanguage="javascript"type="text/javascript"> <!--/***对Date的扩展,将Date转化为指定格式的String*月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用1-2个占位符*年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字)*eg:*(new Date()).pattern("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423 *(newDate()).pattern("yyyy-MM-ddEHH:mm:ss")==>2009-03-10二20:09:04 *(newDate()).pattern("yyyy-MM-ddEEhh:mm:ss")==>2009-03-10周二08:09:04 *(newDate()).pattern("yyyy-MM-ddEEEhh:mm:ss")==>2009-03-10星期二08:09:04 *(newDate()).pattern("yyyy-M-dh:m:s.S")==>2006-7-28:9:4.18 */ Date.prototype.pattern=function(fmt){ varo={ "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()//毫秒 }; varweek={ "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(varkino){ if(newRegExp("("+k+")").test(fmt)){ fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length))); } } returnfmt; } vardate=newDate(); window.alert(date.pattern("yyyy-MM-ddhh:mm:ss")); //--> </script>
方法三:
Date.prototype.format=function(mask){ vard=this; varzeroize=function(value,length){ if(!length)length=2; value=String(value); for(vari=0,zeros='';i<(length-value.length);i++){ zeros+='0'; } returnzeros+value; }; returnmask.replace(/"[^"]*"|'[^']*'|/b(?:d{ 1,4 }|m{ 1,4 }|yy(?:yy)?|([hHMstT])/1?|[lLZ])/b/g,function($0){ switch($0){ case'd': returnd.getDate(); case'dd': returnzeroize(d.getDate()); case'ddd': return['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()]; case'dddd': return['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()]; case'M': returnd.getMonth()+1; case'MM': returnzeroize(d.getMonth()+1); case'MMM': return['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()]; case'MMMM': return['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()]; case'yy': returnString(d.getFullYear()).substr(2); case'yyyy': returnd.getFullYear(); case'h': returnd.getHours()%12||12; case'hh': returnzeroize(d.getHours()%12||12); case'H': returnd.getHours(); case'HH': returnzeroize(d.getHours()); case'm': returnd.getMinutes(); case'mm': returnzeroize(d.getMinutes()); case's': returnd.getSeconds(); case'ss': returnzeroize(d.getSeconds()); case'l': returnzeroize(d.getMilliseconds(),3); case'L': varm=d.getMilliseconds(); if(m>99)m=Math.round(m/10); returnzeroize(m); case'tt': returnd.getHours()<12?'am':'pm'; case'TT': returnd.getHours()<12?'AM':'PM'; case'Z': returnd.toUTCString().match(/[A-Z]+$/); //Returnquotedstringswiththesurroundingquotesremoved default: return$0.substr(1,$0.length-2); } }); };
方法四:
<scripttype="text/javascript"> vardate=newDate(); document.writeln(date); //ThuJan08201501:25:53GMT+0800(中国标准时间) document.writeln(Date.parse()); //NaN document.writeln(Date.parse('6/10/2014')); //1402329600000毫秒数 document.writeln(Date.parse('ThuJan08201501:25:53')); //1420651553000毫秒数 document.writeln(Date.UTC()); //NaN //日期格式化方法 document.writeln('<br/>'); document.writeln(date.toDateString()); //ThuJan082015 document.writeln('<br/>') document.writeln(date.toTimeString()); //01:39:08GMT+0800(中国标准时间) document.writeln('<br/>') document.writeln(date.toLocaleDateString()); //2015年1月8日 document.writeln('<br/>') document.writeln(date.toLocaleTimeString()); //上午1:39:08 document.writeln('<br/>') document.writeln(date.toUTCString()); //Wed,07Jan201517:39:08GMT //一些set,get方法 </script>
方法五:
Date.prototype.Format=function(formatStr){ varstr=formatStr; varWeek=['日','一','二','三','四','五','六']; str=str.replace(/yyyy|YYYY/,this.getFullYear()); str=str.replace(/yy|YY/,(this.getYear()%100)>9?(this.getYear()%100).toString():'0'+(this.getYear()%100)); str=str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0'+(this.getMonth()+1)); str=str.replace(/M/g,(this.getMonth()+1)); str=str.replace(/w|W/g,Week[this.getDay()]); str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0'+this.getDate()); str=str.replace(/d|D/g,this.getDate()); str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0'+this.getHours()); str=str.replace(/h|H/g,this.getHours()); str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0'+this.getMinutes()); str=str.replace(/m/g,this.getMinutes()); str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0'+this.getSeconds()); str=str.replace(/s|S/g,this.getSeconds()); returnstr }
方法六:
Date.prototype.Format=function(formatStr){ varstr=formatStr; varWeek=['日','一','二','三','四','五','六']; str=str.replace(/yyyy|YYYY/,this.getFullYear()); str=str.replace(/yy|YY/,(this.getYear()%100)>9?(this.getYear()%100).toString():'0'+(this.getYear()%100)); str=str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0'+(this.getMonth()+1)); str=str.replace(/M/g,(this.getMonth()+1)); str=str.replace(/w|W/g,Week[this.getDay()]); str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0'+this.getDate()); str=str.replace(/d|D/g,this.getDate()); str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0'+this.getHours()); str=str.replace(/h|H/g,this.getHours()); str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0'+this.getMinutes()); str=str.replace(/m/g,this.getMinutes()); str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0'+this.getSeconds()); str=str.replace(/s|S/g,this.getSeconds()); returnstr }
方法七:
/* 1、<60s,显示为“刚刚” 2、>=1min&&<60min,显示与当前时间差“XX分钟前” 3、>=60min&&<1day,显示与当前时间差“今天XX:XX” 4、>=1day&&<1year,显示日期“XX月XX日XX:XX” 5、>=1year,显示具体日期“XXXX年XX月XX日XX:XX” */ functiontimeFormat(time){ vardate=newDate(time), curDate=newDate(), year=date.getFullYear(), month=date.getMonth()+10, day=date.getDate(), hour=date.getHours(), minute=date.getMinutes(), curYear=curDate.getFullYear(), curHour=curDate.getHours(), timeStr; if(year<curYear){ timeStr=year+'年'+month+'月'+day+'日'+hour+':'+minute; }else{ varpastTime=curDate-date, pastH=pastTime/3600000; if(pastH>curHour){ timeStr=month+'月'+day+'日'+hour+':'+minute; }elseif(pastH>=1){ timeStr='今天'+hour+':'+minute+'分'; }else{ varpastM=curDate.getMinutes()-minute; if(pastM>1){ timeStr=pastM+'分钟前'; }else{ timeStr='刚刚'; } } } returntimeStr; }
是不是第七种更加的个性化一些呢,个人推荐这种