很牛的javascript日期转换函数

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

http://lihui5028.iteye.com/blog/376095

原文地址:https://www.cnblogs.com/huangtailang/p/2512905.html