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月份)。