Ir para conteúdo

POWERED BY:

Arquivado

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

edgard

comparação de datas

Recommended Posts

Hello!!!!!!!

 

Como eu disse, não se compara datas no formato brasileiro!

 

if ( mktime() <= strtotime($dtVencto) )
{
	echo 'não ta dentro do prazo de vencimento';
}
else
{
	echo 'ta dentro do prazo de vencimento';
}

E por favor, não faça um post atrás do outro. ;)

bom, primeiramente desculpa... segundo, não funcionou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar novamente:

 

<?php
$data_hoje = date('d/m/Y');
// Caso a data esteja como string utiliza o srttotime

$data_venc = '11/06/2008';

if ($data_venc <= $data_hoje)
{
echo 'não ta dentro do prazo de vencimento';
}
else
{
echo 'ta dentro do prazo de vencimento';
}
?>

No lugar da variável $data_venc coloque a variável que vem do banco que já deverá estar no formato 11/06/2008 entendeu ?

bom, desculpa se é um post atraz do outro, é que eu to respondendo devido a correria que você's estao fazendo comigo, e agradeco muito vocês dois...

bom, esse exemplo que você me passou tambem nao funcionou, eu nao sei porque, mas em algumas datas que estao fora do prazo ele diz que esta no prazo e vice-versa, ta estranho, eu simplismente fiz o que você me pediu, eu nao to entendendo tambem !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua versão do PHP não está permitindo usar o strtotime() desta maneira, vai ter que utilizar outra forma para transformar para o padrão americano: Y-m-d, porque como eu já disse pelo menos três vezes, não é possível fazer comparação com datas no formato brasileiro!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua versão do PHP não está permitindo usar o strtotime() desta maneira, vai ter que utilizar outra forma para transformar para o padrão americano: Y-m-d, porque como eu já disse pelo menos três vezes, não é possível fazer comparação com datas no formato brasileiro!

 

[]'s

Cara, agradecido de mais... eu ja entendi perfeitamente... eu nao vou mais comparar data do tipo brasileiro... obrigado Paulo !!!

vou procurar saber como eu farei agora isso que você me disse... valeu mesmo

 

Desculpa qualquer coisa ai falou !!!

 

Até mais !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, não tem nada a ver com sua versão do PHP e o que eu disse antes estava quase certo.

 

Você consegue usar sim o strtotime(), mas não com barras e sim com hífens, então:

 

<?php

$dtVencto = str_replace('/', '-', '13/06/2008');

if( date('Y-m-d') >= date('Y-m-d', strtotime($dtVencto)) )
{
	echo 'Fora do prazo';
}
else
{
	echo 'Ok';
}

?>

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele está gravando no banco de dados a data já no formato brasileiro para comparação, não seria mais viável e fácil se ele inserir a data já no formato americano com o tipo de campo DATE ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor maneira de se tratar tempo é com timestamp. Timestamp é a quantidade de minutos desde certa data.

 

se você quer pegar o timestamp de hoje por exemplo, faça isso:

 

// Tem jeito mais facil, mas asism da pra entender
$hoje = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

se você tem uma data, indepentende do seu formato, você pode usar o strtotime()

ja vi que sua data ta no formato dd/mm/yyyy, entaum pra pegar o timestamp disso, você pode usar

 

$data = strtotime(implode("-", array_reverse(explode("/", $dtVencto))))

Agora eh só comparar se a quantidade de segundos são iguais

 

if($data <= $hoje) {
   echo 'nao venceu';
} else {
   echo 'venceu'
}

Espero ter sido claro quanto as vantagens em usar timestamp =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor maneira de se tratar tempo é com timestamp. Timestamp é a quantidade de minutos desde certa data.

 

se você quer pegar o timestamp de hoje por exemplo, faça isso:

 

// Tem jeito mais facil, mas asism da pra entender
$hoje = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

se você tem uma data, indepentende do seu formato, você pode usar o strtotime()

ja vi que sua data ta no formato dd/mm/yyyy, entaum pra pegar o timestamp disso, você pode usar

 

$data = strtotime(implode("-", array_reverse(explode("/", $dtVencto))))

Agora eh só comparar se a quantidade de segundos são iguais

 

if($data <= $hoje) {
   echo 'nao venceu';
} else {
   echo 'venceu'
}

Espero ter sido claro quanto as vantagens em usar timestamp =)

Então amigao, seu código parece ser bem legal, mas na minha maquina nao funcionou, ele nao retorna nada !!! sera que o problema agora é o meu php.ini ou a versão do meu php !!!

 

Na verdade, não tem nada a ver com sua versão do PHP e o que eu disse antes estava quase certo.

 

Você consegue usar sim o strtotime(), mas não com barras e sim com hífens, então:

 

<?php

$dtVencto = str_replace('/', '-', '13/06/2008');

if( date('Y-m-d') >= date('Y-m-d', strtotime($dtVencto)) )
{
	echo 'Fora do prazo';
}
else
{
	echo 'Ok';
}

?>

[]'s

uma coisa que estou achando estranho é que se coloca > funciona e se for >= não funciona !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se não retornou nada, alguma coisa tem errada, e não é o código.

 

Ou é um, ou é outro, sem chance, alguma coisa tem que mostrar =) =)

 

 

Outra coisa, se você faz assim, creio eu que ele vai comparar strings, então não tem como uma string ser maior que a outro, eu acho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, se você faz assim, creio eu que ele vai comparar strings, então não tem como uma string ser maior que a outro, eu acho.

Sim, são strings, mas em formato de data padrão, tanto para banco de dados quanto para qualquer linguagem. ;)

 

Edgar, observe e fique atento quanto à utilização do operador "maior ou igual a", veja se você está aplicando o corretamente em seu contexto.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, se você faz assim, creio eu que ele vai comparar strings, então não tem como uma string ser maior que a outro, eu acho.

Sim, são strings, mas em formato de data padrão, tanto para banco de dados quanto para qualquer linguagem. ;)

 

Edgar, observe e fique atento quanto à utilização do operador "maior ou igual a", veja se você está aplicando o corretamente em seu contexto.

 

[]'s

 

Oi Paulo, fiz o que você me pediu e funcionou, só que para funcionar de acordo eu tive que tirar o = do maior ficou só maior

 

$data_Vencto = str_replace('/', '-', $dtVencto);

 

if( date('Y-m-d') > date('Y-m-d', strtotime($data_Vencto)) ) // se a data de hoje (12/06/2008) for maior que a data do vencimento (11/06/2008) VENCEU

{

VENCEU

}

else

{

NÃO VENCEU

}

 

só que tem o seguinte... deveria ser >= porque se existir um tipo assim:

se a data de hoje (12/06/2008) for maior igual que a data do vencimento (12/06/2008) NÃO VENCEU

 

na minha lógica deveria usar o >= só que se eu coloco o >= não funciona e se eu tiro o = funciona, COMO PODE ISO? PORQUE ?

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.