js格式化时间的方法
本文为大家分享了javascript时间格式化的方法,分享给大家供大家参考,具体内容如下
可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法。
Date.prototype.format=function(format) { 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; }
以上代码必须先声明,然后在使用。使用方法:
vard=newDate().format('yyyy-MM-dd');
另一种方法:
在Javascript之中,日期对象是Date,那么如何将一个日期对象按照定制的格式进行输出呢?
可以现告诉你,Date对象有有四个内置方法,用于输出为字符串格式,分别为:
- 1)toGMTString,将一个日期按照GMT格式显示
- 2)toLocaleString,将一个日期按照本地操作系统格式显示
- 3)toLocaleDateString,按照本地格式显示一个日期对象的日期部分
- 4)toLocaleTimeString,按照本地格式显示一个日期对象的时间部分
尽管Javascript的Date对象中内置提供了这些输出为字符串的方法,但是这些字符串不是我们来控制格式的,因此如果我们需要我们自己定制的特殊格式,那么又该怎么办呢?
不用着急,JsJava中提供了专用的类,专门对日期进行指定格式的字符串输出,你可以下载JsJava-2.0.zip,引入其中的src/jsjava/text/DateFormat.js,或者直接引入jslib/jsjava-2.0.js,样例代码如下:
vardf=newSimpleDateFormat();//jsJava1.0需要使用DateFormat对象,不要弄错就是了 df.applyPattern("yyyy-MM-ddHH:mm:ss"); vardate=newDate(2015,12,18,10,59,51); varstr=df.format(date); document.write(str);//显示结果为:2015-12-1810:59:51
通过上面的例子你可以看出,你需要做的就是指定pattern,那么pattern中yyyy、MM等都表示什么意思呢?如果你学习过Java的日期格式化,那么你应该知道,那都是占位符,这些占位符都具有特殊的函数,例如y表示年,yyyy表示四个数字的年份,例如1982,下面列举一些pattern中支持的特殊字符及其含义(下面表格引自Java的官方文档,做了适当修改):
GEradesignator[url=]Text[/url]AD yYear[url=]Year[/url]1996;96 MMonthinyear[url=]Month[/url]July;Jul;07 wWeekinyear[url=]Number[/url]27 WWeekinmonth[url=]Number[/url]2 DDayinyear[url=]Number[/url]189 dDayinmonth[url=]Number[/url]10 FDayofweekinmonth[url=]Number[/url]2 EDayinweek[url=]Text[/url]Tuesday;Tue aAm/pmmarker[url=]Text[/url]PM HHourinday(0-23)[url=]Number[/url]0 kHourinday(1-24)[url=]Number[/url]24 KHourinam/pm(0-11)[url=]Number[/url]0 hHourinam/pm(1-12)[url=]Number[/url]12 mMinuteinhour[url=]Number[/url]30 sSecondinminute[url=]Number[/url]55 SMillisecond[url=]Number[/url]978
还有三种方法也分享给大家:
第一种方法:
//对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-ddHH:mm:ss"); vartime2=newDate().format("yyyy-MM-dd");
第二种方法:
<mce: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: *(newDate()).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")); //--></mce: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); } }); };
方法一多了,就不知道如何选择了,不过还是要靠大家仔细学习研究,针对不同问题选择解决方法,希望大家喜欢这篇文章。