1. 程式人生 > >js中解析日期型別的資料,並比較大小

js中解析日期型別的資料,並比較大小

 1:解析2007-2-28 10:18:30型別的資料

    function date1(str) {
  var strArray = str.split(" ");
  var strDate = strArray[0].split("-");
  var strTime = strArray[1].split(":");
  
  var a = new Date(strDate[0], (strDate[1]-parseInt(1)), strDate[2], strTime[0], strTime[1], strTime[2]);
  alert(a);
  alert(a.toDateString());
 }

  
var str = "2007-2-28 10:18:30";
	   date1(str);


效果圖:

2:比較兩個表示日期的字串的大小,需要先轉換為日期型別的資料,再進行比較

function compartDate(beginDate, endDate) {
		var dateStr1 = beginDate.split("-");
		var date1 = new Date(dateStr1[0], dateStr1[1], dateStr1[2]);
		
		var dateStr2 = endDate.split("-");
		var date2 = new Date(dateStr2[0], dateStr2[1], dateStr2[2]);
		
		if(date1 > date2) {
			return false;
		} else {
			return true;
		}
	}
 var str1 = "2011-7-16";
	   var str2 = "2011-7-12";
	   if(!compartDate(str1, str2)) {
		   alert("開始日期不能大於結束日期");
	   }


效果圖:

3:網上搜集到的資料

1 /*
 2  parseDate('2010-1-1') return new Date(2010,0,1)  
 3  4  parseDate(' 2010-1-1 ') return new Date(2010,0,1)  
 4  5  parseDate('2010-1-1 15:14:16') return new Date(2010,0,1,15,14,16)  
 5  6  parseDate(' 2010-1-1 15:14:16 ') return new Date(2010,0,1,15,14,16);  
 6  7  parseDate('2010-1-1 15:14:16.254') return new Date(2010,0,1,15,14,16,254)  
 7  8  parseDate(' 2010-1-1 15:14:16.254 ') return new Date(2010,0,1,15,14,16,254)  
 8  9  parseDate('不正確的格式') retrun null  
 9 10*/  
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],10),(parseInt(results[2],10) -1),parseInt(results[3],10));    
15       }
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],10),parseInt(results[2],10) -1,parseInt(results[3],10),parseInt(results[4],10),parseInt(results[5],10),parseInt(results[6],10));    
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],10),parseInt(results[2],10) -1,parseInt(results[3],10),parseInt(results[4],10),parseInt(results[5],10),parseInt(results[6],10),parseInt(results[7],10));    
22   }   
23   return null;   
24 }   
25 
26 
27  /* 
28    將Date/String型別,解析為String型別. 
29    傳入String型別,則先解析為Date型別 
30    不正確的Date,返回 '' 
31    如果時間部分為0,則忽略,只返回日期部分. 
32  */  
33  function formatDate(v){  
34    if(typeof v == 'string') v = parseDate(v);  
35    if(v instanceof Date){  
36      var y = v.getFullYear();  
37      var m = v.getMonth() + 1;  
38      var d = v.getDate();  
39      var h = v.getHours();  
40      var i = v.getMinutes();  
41      var s = v.getSeconds();  
42      var ms = v.getMilliseconds();     
43      if(ms>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;  
44      if(h>0 || i>0 || s>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;  
45      return y + '-' + m + '-' + d;  
46    }  
47    return '';  
48  }  


parseInt語法:parseInt(string, radix);

  其中string為要轉換的字串,radix為二進位制,八進位制,十六進位制或十進位制。

  在預設不指定radix時,當以0x開關時,為十六進位制;如果以08表示八進位制轉化,(因為八進位制不能有8,9所以報錯返回0,即12月份)。