Scientist 2 Denunciar post Postado Maio 24, 2012 Boa Tarde, me deparei hoje com algo até então estranho, estava realizando uma comparação de datas em php da seguinte forma: //no formato d/m/Y com o valor 29/04/2012 if ($minhadata < date('d/m/Y')) echo "HOJE É MAIOR"; else echo "HOJE É MENOR"; O retorno da função é: HOJE É MENOR. Já tentei por ambas as variáveis dentro de 'strtotime' e deu no mesmo. O que fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Paulo Franz 4 Denunciar post Postado Maio 24, 2012 Tenta mudar o formato das datas para Y-m-d, provavelmente é isso, não testei, aí você implementa o formato da data de entrada com isso: date('Y-m-d',strtotime($data_de_entrada)); Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Maio 24, 2012 Luiz a parte problemática é essa: if ($l->getData()->getDt_resultados() > date('d/m/Y')){ //faça algo } else{ //faça algo } mudei para if (date('Y-m-d',strtotime($l->getCongresso()->getDt_resultados())) > date('Y-m-d')){ porém continua a mesma coisa, não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Paulo Franz 4 Denunciar post Postado Maio 24, 2012 se você der um var_dump($l->getCongresso()->getDt_resultados()); o que retorna? Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Maio 24, 2012 retorna isso aki: string '25/07/2012' (length=10) Uma observação: percebi que se fizer assim funciona porém gostaria de saber se este é a forma mais simples (em questão de desempenho): //CONFIGURACAO DA DT RESULTADOS $o_dt_resultados = explode("/", $l->getCongresso()->getDt_resultados()); $n_dt_resultados = date_create(); date_date_set($n_dt_resultados, $o_dt_resultados[2], $o_dt_resultados[1], $o_dt_resultados[0]); //CONFIGURACAO DA DT ATUAL $o_hoje = explode("/", date('d/m/Y')); $n_hoje = date_create(); date_date_set($n_hoje, $o_hoje[2], $o_hoje[1], $o_hoje[0]); if ($n_dt_resultados > $n_hoje) { //faça algo } else { //faça algo } Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Paulo Franz 4 Denunciar post Postado Maio 24, 2012 Estranho, aparentemente está tudo certo, mas já me ocorreu situações parecidas, dependendo a função do php, ele não permite chamadas de funções nos parâmetros. tenta isso: $data = $l->getCongresso()->getDt_resultados(); if (date('Y-m-d',strtotime($data)) > date('Y-m-d')){ Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Maio 24, 2012 nada Luiz Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Paulo Franz 4 Denunciar post Postado Maio 24, 2012 Olha, eu acho que o melhor, tanto por desempenho e por facilidade na programação, deixando um código mais limpo, o melhor seria usar as funções nativas do PHP sempre que possível, porém uma gambiarra, digo, um "ajuste técnico" ^^ aqui e ali é o que salva o programador em muito casos, deve ter alguma coisa errada que não estamos conseguindo ver no outro código, mas fica à seu critério. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Maio 24, 2012 pois é , não entendo porque não funciona da forma normal. Vamos aguardar para ver se alguem pode ajudar aqui pelo forum com novas idéias. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Maio 25, 2012 Com strtotime é a forma mais simples de resolver seu problema. <?php header( 'Content-Type: text/html; Charset=UTF-8' ); date_default_timezone_set( 'America/Sao_Paulo' ); $date = strtotime( '2012-05-24' ); $now = strtotime( date( '2012-05-25' ) ); if( $date < $now ) { echo 'hoje é maior'; } elseif( $date > $now ) { echo 'hoje é menor'; } else { echo 'datas iguais'; } Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Maio 25, 2012 Com strtotime é a forma mais simples de resolver seu problema. <?php header( 'Content-Type: text/html; Charset=UTF-8' ); date_default_timezone_set( 'America/Sao_Paulo' ); $date = strtotime( '2012-05-24' ); $now = strtotime( date( '2012-05-25' ) ); if( $date < $now ) { echo 'hoje é maior'; } elseif( $date > $now ) { echo 'hoje é menor'; } else { echo 'datas iguais'; } Já tentei isso também Carlos, e não faz efeito algum no código. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Maio 25, 2012 É só você formatar as datas de entrada (yyyy-mm-dd), não tem segredo :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites