Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Scientist

Comparando datas em PHP

Recommended Posts

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 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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.