Javascript 解析,格式化日期

http://gwbasic.javaeye.com/blog/36904

 

  1. /* 
  2.   将String类型解析为Date类型. 
  3.   parseDate('2006-1-1') return new Date(2006,0,1) 
  4.   parseDate(' 2006-1-1 ') return new Date(2006,0,1) 
  5.   parseDate('2006-1-1 15:14:16') return new Date(2006,0,1,15,14,16) 
  6.   parseDate(' 2006-1-1 15:14:16 ') return new Date(2006,0,1,15,14,16); 
  7.   parseDate('2006-1-1 15:14:16.254') return new Date(2006,0,1,15,14,16,254) 
  8.   parseDate(' 2006-1-1 15:14:16.254 ') return new Date(2006,0,1,15,14,16,254) 
  9.   parseDate('不正确的格式') retrun null 
  10. */  
  11. function parseDate(str){  
  12.   if(typeof str == 'string'){  
  13.     var results = str.match(/^ *(/d{4})-(/d{1,2})-(/d{1,2}) *$/);  
  14.     if(results && results.length>3)  
  15.       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]));   
  16.     results = str.match(/^ *(/d{4})-(/d{1,2})-(/d{1,2}) +(/d{1,2}):(/d{1,2}):(/d{1,2}) *$/);  
  17.     if(results && results.length>6)  
  18.       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]));   
  19.     results = str.match(/^ *(/d{4})-(/d{1,2})-(/d{1,2}) +(/d{1,2}):(/d{1,2}):(/d{1,2})/.(/d{1,9}) *$/);  
  20.     if(results && results.length>7)  
  21.       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]),parseInt(results[7]));   
  22.   }  
  23.   return null;  
  24. }  
  25.   
  26. /* 
  27.   将Date/String类型,解析为String类型. 
  28.   传入String类型,则先解析为Date类型 
  29.   不正确的Date,返回 '' 
  30.   如果时间部分为0,则忽略,只返回日期部分. 
  31. */  
  32. function formatDate(v){  
  33.   if(typeof v == 'string') v = parseDate(v);  
  34.   if(v instanceof Date){  
  35.     var y = v.getFullYear();  
  36.     var m = v.getMonth() + 1;  
  37.     var d = v.getDate();  
  38.     var h = v.getHours();  
  39.     var i = v.getMinutes();  
  40.     var s = v.getSeconds();  
  41.     var ms = v.getMilliseconds();     
  42.     if(ms>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;  
  43.     if(h>0 || i>0 || s>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;  
  44.     return y + '-' + m + '-' + d;  
  45.   }  
  46.   return '';  
  47. }  

 

老外写的一个javascript下Date格式化函数

http://blog.csdn.net/akunshenjk/archive/2008/06/12/2539638.aspx

  1. Date.prototype.format = function(mask) {  
  2.   
  3.     var d = this;  
  4.   
  5.     var zeroize = function (value, length) {  
  6.   
  7.         if (!length) length = 2;  
  8.   
  9.         value = String(value);  
  10.   
  11.         for (var i = 0, zeros = ''; i < (length - value.length); i++) {  
  12.   
  13.             zeros += '0';  
  14.   
  15.         }  
  16.   
  17.         return zeros + value;  
  18.   
  19.     };    
  20.   
  21.     return mask.replace(/"[^"]*"|'[^']*'|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])/1?|[lLZ])/b/g, function($0) {  
  22.   
  23.         switch($0) {  
  24.   
  25.             case 'd':   return d.getDate();  
  26.   
  27.             case 'dd':  return zeroize(d.getDate());  
  28.   
  29.             case 'ddd'return ['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()];  
  30.   
  31.             case 'dddd':    return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()];  
  32.   
  33.             case 'M':   return d.getMonth() + 1;  
  34.   
  35.             case 'MM':  return zeroize(d.getMonth() + 1);  
  36.   
  37.             case 'MMM'return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()];  
  38.   
  39.             case 'MMMM':    return ['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];  
  40.   
  41.             case 'yy':  return String(d.getFullYear()).substr(2);  
  42.   
  43.             case 'yyyy':    return d.getFullYear();  
  44.   
  45.             case 'h':   return d.getHours() % 12 || 12;  
  46.   
  47.             case 'hh':  return zeroize(d.getHours() % 12 || 12);  
  48.   
  49.             case 'H':   return d.getHours();  
  50.   
  51.             case 'HH':  return zeroize(d.getHours());  
  52.   
  53.             case 'm':   return d.getMinutes();  
  54.   
  55.             case 'mm':  return zeroize(d.getMinutes());  
  56.   
  57.             case 's':   return d.getSeconds();  
  58.   
  59.             case 'ss':  return zeroize(d.getSeconds());  
  60.   
  61.             case 'l':   return zeroize(d.getMilliseconds(), 3);  
  62.   
  63.             case 'L':   var m = d.getMilliseconds();  
  64.   
  65.                     if (m > 99) m = Math.round(m / 10);  
  66.   
  67.                     return zeroize(m);  
  68.   
  69.             case 'tt':  return d.getHours() < 12 ? 'am' : 'pm';  
  70.   
  71.             case 'TT':  return d.getHours() < 12 ? 'AM' : 'PM';  
  72.   
  73.             case 'Z':   return d.toUTCString().match(/[A-Z]+$/);  
  74.   
  75.             // Return quoted strings with the surrounding quotes removed  
  76.   
  77.             default:    return $0.substr(1, $0.length - 2);  
  78.   
  79.         }  
  80.   
  81.     });  
  82.   
  83. };  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值