js日期格式化(字符串转日期日期转字符串)

本文提供了一种使用JavaScript将字符串格式的日期转换为日期对象的方法,并详细介绍了实现这一过程所需的正则表达式及验证逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://jackeysion.iteye.com/blog/513774

 

js字符串转日期型

Javascript代码   收藏代码
  1. /** year : /yyyy/ */   
  2. var  _y4 =  "([0-9]{4})" ;  
  3. /** year : /yy/ */   
  4. var  _y2 =  "([0-9]{2})" ;  
  5. /** index year */   
  6. var  _yi = -1;  
  7. /** month : /MM/ */   
  8. var  _M2 =  "(0[1-9]|1[0-2])" ;  
  9. /** month : /M/ */   
  10. var  _M1 =  "([1-9]|1[0-2])" ;  
  11. /** index month */   
  12. var  _Mi = -1;  
  13. /** day : /dd/ */   
  14. var  _d2 =  "(0[1-9]|[1-2][0-9]|30|31)" ;  
  15. /** day : /d/ */   
  16. var  _d1 =  "([1-9]|[1-2][0-9]|30|31)" ;  
  17. /** index day */   
  18. var  _di = -1;  
  19. /** hour : /HH/ */   
  20. var  _H2 =  "([0-1][0-9]|20|21|22|23)" ;  
  21. /** hour : /H/ */   
  22. var  _H1 =  "([0-9]|1[0-9]|20|21|22|23)" ;  
  23. /** index hour */   
  24. var  _Hi = -1;  
  25. /** minute : /mm/ */   
  26. var  _m2 =  "([0-5][0-9])" ;  
  27. /** minute : /m/ */   
  28. var  _m1 =  "([0-9]|[1-5][0-9])" ;  
  29. /** index minute */   
  30. var  _mi = -1;  
  31. /** second : /ss/ */   
  32. var  _s2 =  "([0-5][0-9])" ;  
  33. /** second : /s/ */   
  34. var  _s1 =  "([0-9]|[1-5][0-9])" ;  
  35. /** index month */   
  36. var  _si = -1;  
  37. var  regexp;  
  38. function  getDate(dateString, formatString) {  
  39.     if  (validateDate(dateString, formatString)) {  
  40.         var  now =  new  Date();  
  41.         var  vals = regexp.exec(dateString);  
  42.         var  index = validateIndex(formatString);  
  43.         var  year = index[0] >= 0 ? vals[index[0] + 1] : now.getFullYear();  
  44.         var  month = index[1] >= 0 ? (vals[index[1] + 1] - 1) : now.getMonth();  
  45.         var  day = index[2] >= 0 ? vals[index[2] + 1] : now.getDate();  
  46.         var  hour = index[3] >= 0 ? vals[index[3] + 1] :  "" ;  
  47.         var  minute = index[4] >= 0 ? vals[index[4] + 1] :  "" ;  
  48.         var  second = index[5] >= 0 ? vals[index[5] + 1] :  "" ;  
  49.         var  validate;  
  50.         if  (hour ==  "" ) {  
  51.             validate = new  Date(year, month, day);  
  52.         } else  {  
  53.             validate = new  Date(year, month, day, hour, minute, second);  
  54.         }  
  55.         if  (validate.getDate() == day) {  
  56.             return  validate;  
  57.         }  
  58.     }  
  59.     alert("wrong date" );  
  60. }  
  61. function  validateDate(dateString, formatString) {  
  62.     var  dateString = trim(dateString);  
  63.     if  (dateString ==  "" ) {  
  64.         return ;  
  65.     }  
  66.     var  reg = formatString;  
  67.     reg = reg.replace(/yyyy/, _y4);  
  68.     reg = reg.replace(/yy/, _y2);  
  69.     reg = reg.replace(/MM/, _M2);  
  70.     reg = reg.replace(/M/, _M1);  
  71.     reg = reg.replace(/dd/, _d2);  
  72.     reg = reg.replace(/d/, _d1);  
  73.     reg = reg.replace(/HH/, _H2);  
  74.     reg = reg.replace(/H/, _H1);  
  75.     reg = reg.replace(/mm/, _m2);  
  76.     reg = reg.replace(/m/, _m1);  
  77.     reg = reg.replace(/ss/, _s2);  
  78.     reg = reg.replace(/s/, _s1);  
  79.     reg = new  RegExp( "^"  + reg +  "$" );  
  80.     regexp = reg;  
  81.     return  reg.test(dateString);  
  82. }  
  83. function  validateIndex(formatString) {  
  84.     var  ia =  new  Array();  
  85.     var  i = 0;  
  86.     _yi = formatString.search(/yyyy/);  
  87.     if  (_yi < 0) {  
  88.         _yi = formatString.search(/yy/);  
  89.     }  
  90.     if  (_yi >= 0) {  
  91.         ia[i] = _yi;  
  92.         i++;  
  93.     }  
  94.     _Mi = formatString.search(/MM/);  
  95.     if  (_Mi < 0) {  
  96.         _Mi = formatString.search(/M/);  
  97.     }  
  98.     if  (_Mi >= 0) {  
  99.         ia[i] = _Mi;  
  100.         i++;  
  101.     }  
  102.     _di = formatString.search(/dd/);  
  103.     if  (_di < 0) {  
  104.         _di = formatString.search(/d/);  
  105.     }  
  106.     if  (_di >= 0) {  
  107.         ia[i] = _di;  
  108.         i++;  
  109.     }  
  110.     _Hi = formatString.search(/HH/);  
  111.     if  (_Hi < 0) {  
  112.         _Hi = formatString.search(/H/);  
  113.     }  
  114.     if  (_Hi >= 0) {  
  115.         ia[i] = _Hi;  
  116.         i++;  
  117.     }  
  118.     _mi = formatString.search(/mm/);  
  119.     if  (_mi < 0) {  
  120.         _mi = formatString.search(/m/);  
  121.     }  
  122.     if  (_mi >= 0) {  
  123.         ia[i] = _mi;  
  124.         i++;  
  125.     }  
  126.     _si = formatString.search(/ss/);  
  127.     if  (_si < 0) {  
  128.         _si = formatString.search(/s/);  
  129.     }  
  130.     if  (_si >= 0) {  
  131.         ia[i] = _si;  
  132.         i++;  
  133.     }  
  134.     var  ia2 =  new  Array(_yi, _Mi, _di, _Hi, _mi, _si);  
  135.     for  (i = 0; i < ia.length - 1; i++) {  
  136.         for  (j = 0; j < ia.length - 1 - i; j++) {  
  137.             if  (ia[j] > ia[j + 1]) {  
  138.                 temp = ia[j];  
  139.                 ia[j] = ia[j + 1];  
  140.                 ia[j + 1] = temp;  
  141.             }  
  142.         }  
  143.     }  
  144.     for  (i = 0; i < ia.length; i++) {  
  145.         for  (j = 0; j < ia2.length; j++) {  
  146.             if  (ia[i] == ia2[j]) {  
  147.                 ia2[j] = i;  
  148.             }  
  149.         }  
  150.     }  
  151.     return  ia2;  
  152. }  
  153. function  trim(str) {  
  154.     return  str.replace(/(^/s*)|(/s*$)/g,  "" );  
  155. }  
  156.    


日期型格式化

Javascript代码   收藏代码
  1. Date.prototype.format =  function (format)  
  2. {  
  3.     var  o = {  
  4.       
  5.         "M+"  :  this .getMonth()+1,  //month   
  6.         "d+"  :  this .getDate(), //day   
  7.         "h+"  :  this .getHours(),  //hour   
  8.         "m+"  :  this .getMinutes(),  //minute   
  9.         "s+"  :  this .getSeconds(),  //second   
  10.         "q+"  : Math.floor(( this .getMonth()+3)/3),  //quarter   
  11.         "S"  :  this .getMilliseconds()  //millisecond   
  12.     }  
  13.   
  14.     if (/(y+)/.test(format))   
  15.         format = format.replace(RegExp.$1,(this .getFullYear()+ "" ).substr(4 - RegExp.$1.length));  
  16.     for ( var  k  in  o)  
  17.         if ( new  RegExp( "(" + k + ")" ).test(format))  
  18.             format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00" + o[k]).substr(( "" + o[k]).length));  
  19.     return  format;  

另外: http://blog.youkuaiyun.com/yzy0612/archive/2007/08/07/1730732.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值