js中解析日期型別的資料,並比較大小
阿新 • • 發佈:2019-02-14
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月份)。