日期格式有很多种,如:2008-02-28, 28/02/2008
如何通过一个日期的格式化字符:yyyy-MM-dd,dd/MM/yyyy,就可以识别出上述日期呢?
例如:getDate("2008-02-28", "yyyy-MM-dd"),就可以返回这个日期

解决方案 »

  1.   

    JavaScript的DateFormat类 
    参考http://www.blogjava.net/cerdar/archive/2007/02/02/97520.html
      

  2.   

    嘿嘿,自己写了:
      //将字符串转换为日期
        String.prototype.toDate = function(format) {
            pattern = format.replace("yyyy", "(\\~1{4})").replace("yy", "(\\~1{2})")
    .replace("MM", "(\\~1{2})").replace("M", "(\\~1{1,2})")
    .replace("dd", "(\\~1{2})").replace("d", "(\\~1{1,2})").replace(/~1/g, "d");        var returnDate;
            if (new RegExp(pattern).test(this)) {
                var yPos = format.indexOf("yyyy");
                var mPos = format.indexOf("MM");
                var dPos = format.indexOf("dd");
                if (mPos == -1) mPos = format.indexOf("M");
                if (yPos == -1) yPos = format.indexOf("yy");
                if (dPos == -1) dPos = format.indexOf("d");
                var pos = new Array(yPos + "y", mPos + "m", dPos + "d").sort();
                var data = { y: 0, m: 0, d: 0 };
                var m = this.match(pattern);
                for (var i = 1; i < m.length; i++) {                if (i == 0) return;
                    var flag = pos[i - 1].split('')[1];
                    data[flag] = m[i];
                };            if (data.y.toString().length == 2) {
                    data.y = parseInt("20" + data.y);
                }
                data.m = data.m - 1;
                returnDate = new Date(data.y, data.m, data.d);
            }
            if (returnDate == null || isNaN(returnDate)) returnDate = new Date();
            return returnDate;
        }
      

  3.   

    function dateChange(str,type)
           {
               var str="2008/08/28";//时间
               var type="dd-mm-yyyy";//格式(可变)mm.dd.yyyy,yyyy/dd/mm.......
               //注:yyyy,dd,mm固定,自己可变
               
               var t=str.split("/");
               var dateValue=new Array(3);
              
               dateValue[0]=t[0];//年
               dateValue[1]=t[1];//月
               dateValue[2]=t[2];//日
               
               var result=type.replace("yyyy",dateValue[0]).replace("mm",dateValue[1]).replace("dd",dateValue[2]);           alert(result);
           }
      

  4.   

    楼上的程序有些不足
    1.客户程序在调用的时候,如果是yyyy-MM-dd,那你的程序也需要改,关键是你要在未知分隔符下获取日期。有些人用/,有些人用-,中国用2008年12月10日
    2.如果日期格式是yyy-M-d呢,你怎么解决?
      

  5.   

    嘿嘿,试试:
    "2008年10月10日".toDate("yyyy年MM月dd日");