function _strtotime($data){
if ($data==NULL) return NULL;
$data = preg_replace("#[\/]+0?#","-",$data);
if(strlen($data)<8){
$data = preg_replace("#^(\d+)\D(\d+)\D(\d+)$#","$3-$2-$1",$data);
}
return strtotime($data);
}

/**
* Converte uma data passada em qualquer formato para um formato de sa�da
* Obs.: Datas passadas com separadores (Qualquer Caracter n�o num�rico)
* T�m mais chances de ser convertida corretamente
* Datas sem separadores ser�o tratados como DiaMesAno caso
* n�o seja passado o formato da data passada
* Exemplos.:
* converteData('2008/03/16') retorna 16/03/2008
* converteData('2008-3-16') retorna 16/03/2008
* converteData('2008-3-16',dmY) retorna 16032008
* converteData('20080316') retorna 16/03/2008
* converteData('16032008') retorna 31/12/1969 (falha porque tenta usar a data como 1603/20/08)
* converteData('16032008','Ymd','dmY') retorna 16032008
* converterData('16032008','r','dmY')
* DateUtils::converterData('16032008','r','dmY')
* Sun, 16 Mar 2008 00:00:00 -0300
* @param string {data} A data a ser convertida
* @param string {mascara} A m�scara de sa�da da fun��o
* @param string {formato} Define como a data passada deve ser tratada caso a
* data seja passada sem separadores
*/
function converteData($data,$mascara='d/m/Y',$formato='Ymd'){
if(!preg_match("#^\d(1,2)\D\d{1,2}\D\d{1,2}$#",$data) && preg_match("#\D#",$data)){
$data = preg_replace("#\D#","-",$data);
$stamp = strtotime($data);
}else{
$trans = array('d'=>'(\d{2})',
'm'=>'(\d{2})',
'y'=>'(\d{1,2})',
'Y'=>'(\d{2,4})');
$replace = str_replace('d','$3',$formato);
$replace =str_replace('m','$2',$replace);
$replace =str_replace('Y','$1',$replace);
$replace =str_replace('y','$1',$replace);
$regex = strtr($formato,$trans);
$dt = preg_replace("#$regex#","$replace",$data);
$stamp = strtotime($dt);
}
return date($mascara,$stamp);
}