Actionscript 3 - A maneira mais rápida de analisar aaaa-mm-dd hh: mm: ss em um objeto Date?

Eu tenho tentado encontrar uma maneira muito rápida de analisar aaaa-mm-dd [hh: mm: ss] em um objeto Date. Aqui estão as três maneiras pelas quais tentei fazê-lo e as horas que cada método leva para analisar 50.000 seqüências de data e hora.

Alguém conhece maneiras mais rápidas de fazer isso ou dicas para acelerar os métodos?

castMethod1 takes 3673 ms 
castMethod2 takes 3812 ms 
castMethod3 takes 3931 ms

Código:

private function castMethod1(dateString:String):Date {
    if ( dateString == null ) {
        return null;
    }

    var year:int = int(dateString.substr(0,4));
    var month:int = int(dateString.substr(5,2))-1;
    var day:int = int(dateString.substr(8,2));

    if ( year == 0 && month == 0 && day == 0 ) {
        return null;
    }

    if ( dateString.length == 10 ) {
        return new Date(year, month, day);
    }

    var hour:int = int(dateString.substr(11,2));
    var minute:int = int(dateString.substr(14,2));
    var second:int = int(dateString.substr(17,2));

    return new Date(year, month, day, hour, minute, second);
}

-

private function castMethod2(dateString:String):Date {
    if ( dateString == null ) {
        return null;
    }

    if ( dateString.indexOf("0000-00-00") != -1 ) {
        return null;
    }

    dateString = dateString.split("-").join("/");

    return new Date(Date.parse( dateString ));
}

-

private function castMethod3(dateString:String):Date {
    if ( dateString == null ) {
        return null;
    }

    var mainParts:Array = dateString.split(" ");
    var dateParts:Array = mainParts[0].split("-");

    if ( Number(dateParts[0])+Number(dateParts[1])+Number(dateParts[2]) == 0 ) {
        return null;
    }

    return new Date( Date.parse( dateParts.join("/")+(mainParts[1]?" "+mainParts[1]:" ") ) );
}

Não, o Date.parse não manipula traços por padrão. E eu preciso retornar null para strings de data e hora como"0000-00-00".

questionAnswers(6)

yourAnswerToTheQuestion