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;
}
是不是第七种更加的个性化一些呢,个人推荐这种