Função para formatar datas no PHP

Funciona bem no PHP 5.3+, pau pra toda obra! ;-)


Basicamente para chamá-la:

$stringData = "2014–09–16 10:16:06";
echo format_date($stringData,"d/m/Y H:i:s");

Não lembro aonde a encontrei, por isso, não tenho como dar os créditos. Mas seja lá quem for, salvou alguns fios de cabelos meus!

PS: Só funfa legal no PHP 5.3+ (devido à função DateTime).

function format_date($dateStr, $outputFormat = ‘d/m/Y’) { $regs = array( ‘@^(?P<ano>\d{4})-(?P<mes>\d{2})-(?P<dia>\d{2})(?P<hora>\s{1}\d{2})?(?P<minuto>:\d{2})?(?P<segundo>:\d{2})?$@’, ‘@^(?P<dia>\d{2})/(?P<mes>\d{2})/(?P<ano>\d{4})(?P<hora>\s{1}\d{2})?(?P<minuto>:\d{2})?(?P<segundo>:\d{2})?$@’, ); foreach($regs as $regex){ if(preg_match($regex, $dateStr, $reg)){ $hora = empty($reg[‘hora’]) ? 0 : $reg[‘hora’]; $minuto = empty($reg[‘minuto’]) ? 0 : str_replace(‘:’, ‘’, $reg[‘minuto’]); $segundo = empty($reg[‘segundo’]) ? 0 : str_replace(‘:’, ‘’, $reg[‘segundo’]); $date = new DateTime(); $date->setDate($reg[‘ano’], $reg[‘mes’], $reg[‘dia’]); $date->setTime((float) $hora, (float) $minuto, (float) $segundo); return $date->format($outputFormat); } } throw new InvalidArgumentException(‘Formato de data inválido: ‘.$dateStr); }
Show your support

Clapping shows how much you appreciated Maykel Esser’s story.