js格式化时间的方法

本文为大家分享了javascript时间格式化的方法,分享给大家供大家参考,具体内容如下
可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Date.prototype.format = function (format)
{
var o = {
"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 ( var k in o) if ( new RegExp( "(" + k + ")" ).test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1? o[k] :
( "00" + o[k]).substr(( "" + o[k]).length));
return format;
}

以上代码必须先声明,然后在使用。使用方法:


1
var d = new Date().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,样例代码如下:


1
2
3
4
5
var df= new SimpleDateFormat(); //jsJava1.0需要使用DateFormat对象,不要弄错就是了
df.applyPattern( "yyyy-MM-dd HH:mm:ss" );
var date= new Date(2015,12,18,10,59,51);
var str=df.format(date);
document.write(str); //显示结果为:2015-12-18 10:59:51

通过上面的例子你可以看出,你需要做的就是指定pattern,那么pattern中yyyy、MM等都表示什么意思呢?如果你学习过Java的日期格式化,那么你应该知道,那都是占位符,这些占位符都具有特殊的函数,例如y表示年,yyyy表示四个数字的年份,例如1982,下面列举一些pattern中支持的特殊字符及其含义(下面表格引自Java的官方文档,做了适当修改):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
G Era designator [url=]Text[/url] AD
y Year [url=]Year[/url] 1996; 96
M Month in year [url=]Month[/url] July; Jul; 07
w Week in year [url=]Number[/url] 27
W Week in month [url=]Number[/url] 2
D Day in year [url=]Number[/url] 189
d Day in month [url=]Number[/url] 10
F Day of week in month [url=]Number[/url] 2
E Day in week [url=]Text[/url] Tuesday; Tue
a Am/pm marker [url=]Text[/url] PM
H Hour in day (0-23) [url=]Number[/url] 0
k Hour in day (1-24) [url=]Number[/url] 24
K Hour in am/pm (0-11) [url=]Number[/url] 0
h Hour in am/pm (1-12) [url=]Number[/url] 12
m Minute in hour [url=]Number[/url] 30
s Second in minute [url=]Number[/url] 55
S Millisecond [url=]Number[/url] 978

还有三种方法也分享给大家:

第一种方法:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 对Date的扩展,将 Date 转化为指定格式的String 
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")   ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) 
{ //author: meizz 
  var o = { 
   "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 ( 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; 
}

调用方法:


1
2
var time1 = new Date().format( "yyyy-MM-dd HH:mm:ss" );   
var time2 = new Date().format( "yyyy-MM-dd" ); 

第二种方法:


6
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<me:script language= "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-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423  
  * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04  
  * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04  
  * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04  
  * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18  
  */   
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;    
}   
    
var date = new Date();  
window.alert(date.pattern( "yyyy-MM-dd hh:mm:ss" ));
// --></mce:script>

 第三种方法:

?

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Date.prototype.format = function (mask) {  
    
   var d = this ;  
    
   var zeroize = function (value, length) {  
    
     if (!length) length = 2;  
    
     value = String(value);  
    
     for ( var i = 0, zeros = '' ; i < (length - value.length); i++) {  
    
       zeros += '0' ;  
    
     }  
    
     return zeros + value;  
    
   };   
    
   return mask.replace(/ "[^" ]*"| '[^' ]* '|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])/1?|[lLZ])/b/g, function($0) {  
    
     switch($0) {  
    
       case ' d ':  return d.getDate();  
    
       case ' dd ': return zeroize(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 ':  return d.getMonth() + 1;  
    
       case ' MM ': return zeroize(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 ': return String(d.getFullYear()).substr(2);  
    
       case ' yyyy ':  return d.getFullYear();  
    
       case ' h ':  return d.getHours() % 12 || 12;  
    
       case ' hh ': return zeroize(d.getHours() % 12 || 12);  
    
       case ' H ':  return d.getHours();  
    
       case ' HH ': return zeroize(d.getHours());  
    
       case ' m ':  return d.getMinutes();  
    
       case ' mm ': return zeroize(d.getMinutes());  
    
       case ' s ':  return d.getSeconds();  
    
       case ' ss ': return zeroize(d.getSeconds());  
    
       case ' l ':  return zeroize(d.getMilliseconds(), 3);  
    
       case ' L ':  var m = d.getMilliseconds();  
    
           if (m > 99) m = Math.round(m / 10);  
    
           return zeroize(m);  
    
       case ' tt ': return d.getHours() < 12 ? ' am ' : ' pm ';  
    
       case ' TT ': return d.getHours() < 12 ? ' AM ' : ' PM ';  
    
       case ' Z':  return d.toUTCString().match(/[A-Z]+$/);  
    
       // Return quoted strings with the surrounding quotes removed  
    
       default return $0.substr(1, $0.length - 2);  
    
     }  
    
   });  
    
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值