ano M -> mes D -> dia H -> hora I -> minuto S -> segundo. */ $posR = array('Y', 'M', 'D', 'H', 'I', 'S'); /* * Separadors para a dta padrão retornada. */ $sepR = array('-', '-', ' ', ':', ':', ''); /* * Convert os dados do parametro "$formato" para maiúsculo para permitir a busca * da posição correspondente no array "$data". */ $gFormat = preg_split("/[-' ':\/]/", $formato); array_walk($gFormat, 'Upper'); /* * Cria array a partir do parrametro "$data". */ $data = preg_split('/[-" ":\/]/', trim($data)); $dt = ''; foreach ($posR as $keyR) { if ((($key = array_search($keyR, $gFormat)) !== false) && isset($data[$key])) { $dt .= ($data[$key] . $sepR[array_search($keyR, $posR)]); } } return $dt; } function ValidaData($data, $formato = 'd/m/Y', $message = '') { /* * Para utilizar "$message" passe nesse formato: "A data %s é invalida!"; */ try { $dt = DateTime::createFromFormat($formato, $data); if (!$dt || ($dt->format($formato) != $data)) { throw new Exception(); } return true; } catch (Exception $ex) { throw new Exception($message ? sprintf($message, $data) : "A data: $data é inválida!"); } } function FormataData($data, $formato = 'Y-m-d') { try { $data = new DateTime($data); return $data->format($formato); } catch (Exception $ex) { throw new Exception("Não foi possível formatar a data: $data!"); } } function Upper(&$val, $key) { $val = strtoupper($val); }