espiculo 1 Denunciar post Postado Maio 21, 2010 Boa tarde , aleguem tem idéia de como fazer para verificar as data , no campo eu não posso aceitar data menor que data de hoje ! assim não da certo , se dia for 01 ou 09 da erro fica menor que do de cima ! $entrada = "01/04/2010"; $hoje = "21/05/2010"; if($entrada < $hoje){ echo "Data menor que hoje"; } Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Maio 21, 2010 Você teria que fazer essa verificação uasndo o formato aaaa-mm-dd, ai funcionaria. Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Aleixo 1 Denunciar post Postado Maio 21, 2010 2 funcoes pra você fazer a ida e volta function data2banco ($d2b) { if(!empty($d2b)){ $d2b_ano=substr($d2b,6,4); $d2b_mes=substr($d2b,3,2); $d2b_dia=substr($d2b,0,2); $d2b="$d2b_ano-$d2b_mes-$d2b_dia"; } return $d2b; } function banco2data($b2d) { if($b2d=="0000-00-00" or empty($b2d)){ $b2d=""; return $b2d; }else{ $b2d_ano=substr($b2d,0,4); $b2d_mes=substr($b2d,5,2); $b2d_dia=substr($b2d,8,2); $b2d=$b2d_dia.'/'.$b2d_mes.'/'.$b2d_ano; return $b2d; } } ai ficaria ssim $entrada = data2banco("01/04/2010"); $hoje = date("Y-m-d"); if($entrada < $hoje){ echo "Data menor que hoje"; } Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Salles 1 Denunciar post Postado Maio 21, 2010 Também podemos criar essa função para formatar as datas através de expressões regulares... function formata_data($_data) { // o array $partes é um dos parâmetros de preg_match(), e retorna os padrões encontrados na string. if (preg_match("/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/", $_data, $partes)) { $data_formatada = $partes[3]."-".$partes[2]."-".$partes[1]; return $data_formatada; } } $entrada = strtotime(formata_data($data)); $hoje = time(); // daí é só comparar os números... if ($entrada < $hoje) { echo "Funciona...."; } Primeiro obtemos a data formatada para GNU (através de formata_data() que criamos). Depois obtemos os timestamp´s da data de entrada (um número inteiro que representa essa data) com a função strtotime(), e da data de hoje, através da função time(), que já retorna o timestamp atual. Assim também fica bem simples. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Salles 1 Denunciar post Postado Maio 21, 2010 function formata_data($_data) { // o array $partes é um dos parâmetros de preg_match(), e retorna os padrões encontrados na string. if (preg_match("/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/", $_data, $partes)) { $data_formatada = $partes[3]."-".$partes[2]."-".$partes[1]; return $data_formatada; } } Opa, corrigindo... Substitua essa parte "/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/" por "/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/" Pronto, tudo beleza... Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 21, 2010 <?php $data1 = new DateTime( '05/21/2010' ); // Veja, o padrão aqui é o americano (mes/dia/ano). $data2 = new DateTime( '2010-05-15' ); // Padrão do MySQL também é aceito. var_dump( $data1 > $data2 ); var_dump( $data1 >= $data2 ); var_dump( $data1 <= $data2 ); var_dump( $data1 < $data2 ); var_dump( $data1 == $data2 ); ?> Saída: bool(true) bool(true) bool(false) bool(false) bool(false) Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Maio 21, 2010 se você tah buscando essa data do banco dá pra fazer na sintaxe sql facim!! Compartilhar este post Link para o post Compartilhar em outros sites