您的位置:首页 > Web前端 > JavaScript

js中解析日期类型的数据,并比较大小

2011-07-20 17:26 686 查看
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月份)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: