Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, talvez alguns de vcs conheçam a função strptime. Pois bem, o fato é que ela não funciona em Windows. Pra quem está com prequiça de entrar no link, nesta função você informa uma data (ex: 1989-10-18) e indica o formato dela (para este caso: %Y-%m-%d), a função então retorna um array com essas info separados por indices.
Pensando numa função parecida, tive até algumas idéia para implementar. Primeiro, a função:
function strptime($date,$format,&$array="") { $regex = $format; $parts = explode("%",$format); $ordem = array(); foreach($parts as $chave => $valor) { if ($chave==0) continue; $newKey = $valor[0]; $ordem[$newKey] = $chave; } $regex = str_replace("%d","([0-9]{2})",$regex); $regex = str_replace("%m","([0-9]{2})",$regex); $regex = str_replace("%Y","([0-9]{4})",$regex); $regex = str_replace("%H","([0-9]{2})",$regex); $regex = str_replace("%M","([0-9]{2})",$regex); $regex = str_replace("%S","([0-9]{2})",$regex); preg_match("#^".$regex."$#",$date,$sobra); foreach($ordem as $chave2 => $valor2) { $$chave2 = $sobra[$valor2]; } $array = array("d" => $d,"m" => $m,"Y" => $Y,"H" => $H,"M" => $M,"S" => $S); $time = mktime($H,$M,$S,$m,$d,$Y); return $time;}
int strptime ( string timestamp, string format [, array result] )
A função tem 3 argumentos, sendo 2 deles obrigatórios, e o outro uma referência. A função retorna um inteiro contendo o timestamp da data informada. timestamp deve ser uma string de data em qualquer formato, format é o formato da data informada em timestamp.
Pode ser dado um array result. Este array irá conter as informações da data dada em timestamp, com os identificadores da função strftime (d, m, Y, etc) sendo os índices.
Exemplo 1: Usando array como referência
$info = array();strptime("18/10/1989","%d/%m/%Y",$info);var_dump($info);Produz:
array(6) { ["d"]=> string(2) "18" ["m"]=> string(2) "10" ["Y"]=> string(4) "1989" ["H"]=> NULL ["M"]=> NULL ["S"]=> NULL}Exemplo 2: Convertendo uma data
print date("d/m/Y",strptime("1989-10-18""%Y-%m-%d"));Produz:
18/10/1989Obs.: A função ainda contém alguns bugs, que espero resolver em breve.
Carregando comentários...