怎样把字符串"2010-12-08"转换为Date?var olddate="2010-12-08";new Date(Date.parse(olddate))是不行的。怎样正确转换?

解决方案 »

  1.   

    自己写转换函数:
    下面的是我这常用的,给你用用,function parsedate(s) {
    /(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec(s);
    var m1 = (RegExp.$1 && RegExp.$1 > 1899 && RegExp.$1 < 2101)
    ? parseFloat(RegExp.$1)
    : today.getFullYear();
    var m2 = (RegExp.$2 && (RegExp.$2 > 0 && RegExp.$2 < 13))
    ? parseFloat(RegExp.$2)
    : today.getMonth() + 1;
    var m3 = (RegExp.$3 && (RegExp.$3 > 0 && RegExp.$3 < 32))
    ? parseFloat(RegExp.$3)
    : today.getDate();
    var m4 = (RegExp.$4 && (RegExp.$4 > -1 && RegExp.$4 < 24))
    ? parseFloat(RegExp.$4)
    : 0;
    var m5 = (RegExp.$5 && (RegExp.$5 > -1 && RegExp.$5 < 60))
    ? parseFloat(RegExp.$5)
    : 0;
    /(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec("0000-00-00 00\:00");
    return new Date(m1, m2 - 1, m3, m4, m5);
    }
      

  2.   

    function parsedate(s) {
    /(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec(s);
    var m1 = (RegExp.$1 && RegExp.$1 > 1899 && RegExp.$1 < 2101)
    ? parseFloat(RegExp.$1)
    : today.getFullYear();
    var m2 = (RegExp.$2 && (RegExp.$2 > 0 && RegExp.$2 < 13))
    ? parseFloat(RegExp.$2)
    : today.getMonth() + 1;
    var m3 = (RegExp.$3 && (RegExp.$3 > 0 && RegExp.$3 < 32))
    ? parseFloat(RegExp.$3)
    : today.getDate();
    var m4 = (RegExp.$4 && (RegExp.$4 > -1 && RegExp.$4 < 24))
    ? parseFloat(RegExp.$4)
    : 0;
    var m5 = (RegExp.$5 && (RegExp.$5 > -1 && RegExp.$5 < 60))
    ? parseFloat(RegExp.$5)
    : 0;
    /(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec("0000-00-00 00\:00");
    return new Date(m1, m2 - 1, m3, m4, m5);
    }
      

  3.   

    new Date(olddate)
    直接这样啊
      

  4.   

    new Date(olddate.replace(/-/g,'/'))
      

  5.   

    我收藏了,现在没用。因为我只需要年月日不需要时分秒,不想太复杂 xiexie
      

  6.   


    哎,本来想告诉你的,
    那个能用分秒的,
    不是说一定要分秒的,
    你转换格式从年,月,日,时,分,都可以,
    如:我一般转换的是"yyyy-MM-dd"