Ir para conteúdo

POWERED BY:

Arquivado

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

gustalevin

Comparação de datas PHP - dd/mm/yyyy

Recommended Posts

Estou querendo fazer uma comparação de datas em PHP do tipo: se DataInicio >= DataHoje + 3 dias, faz tal coisa. Senão, não faz nada. Tentei algo assim:



if ((1/86400)*(strtotime($_SESSION['buscaReserva']['dataInicio'])-strtotime(date("d/m/Y"))))>=3) {
// Do something }
else {
// Do nothing }

Sendo que as duas datas inicialmente estão no formato dd/mm/YYYY. Por exemplo, 23/06/2015 (hoje) deve se pelo menos três dias menos que a data da minha SESSION (26/06/2015, por exemplo).


COMO FAÇO?


Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei algumas coisas dos links, mas não funcionou... :(

 

Uma solução que vi na internet e me pareceu a melhor, mas também não deu muito certo:

$data = $_SESSION['buscaReserva']['dataInicio'];
$hoje = date("Y-m-d");

$data = strtotime($data);
$hojeMaisTres = date('Y-m-d',strtotime($date . "+3 days"));

if ($data > $hojeMaisTres) {
// Do something
} else {
// Do nothing
}

E pior que como é num site que assumi de outro desenvolvedor, não tenho como usar os alerts pra confirmar se as variáveis de data estão mesmo chegando da forma certa. :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você implementou o que foi apresentado nos links? Qual foi o resultado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, em algumas partes da página ele faz a comparação sem problema.

Em outras, acho que ele não faz.

 

Não sei, tem algum "gato" nessa página que eu assumi. Pode fechar o tópico se quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Estou querendo fazer uma comparação de datas em PHP do tipo: se DataInicio >= DataHoje + 3 dias, faz tal coisa. Senão, não faz nada. Tentei algo assim:

if ((1/86400)*(strtotime($_SESSION['buscaReserva']['dataInicio'])-strtotime(date("d/m/Y"))))>=3) {
// Do something }
else {
// Do nothing }

Sendo que as duas datas inicialmente estão no formato dd/mm/YYYY. Por exemplo, 23/06/2015 (hoje) deve se pelo menos três dias menos que a data da minha SESSION (26/06/2015, por exemplo).

COMO FAÇO?

 

 

 

 

Tenta assim :

 

$dataInicio = date('sua data aqui');

 

 

$dataHoje_modificada = date( "Y-m", strtotime( "+ 3 day" ) ); // data de hoje + 3 dias

 

ai aplica o IF :

 

if ($dataInicio >= $dataHoje.... )

{

 

seu codigo

}

 

else

 

{

 

}

 

voce pode usar uma variavel tambem, para declara quantos dias voce quer somar :

 

$somaDias = $_POST ou $_GET['dias'];

 

$dataHoje_modificado = date( "Y-m", strtotime( " + ".$somaDias." day" ) );

 

 

Espero que ajude.

 

 

 

http://php.net/manual/pt_BR/function.strtotime.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

seria legal, já que vc quer adicionar 3 DIAS, se colocasse - na comparação - as datas no seguinte formato "aaaammdd" - tudo junto, ex: 23/06/2015 -> 20150623 e nesse caso adicionasse os 3 dias. Agora, vamos à conversão

 

Estou considerando o formato de data dd/mm/aaaa - 23/06/2015. Criamos três variáveis, $dia, $mes e $ano

 

$dia = substr('23/06/2015', 0, 1); // a saída será 23

$mes = substr('23/06/2015', 2, 2); // 06

$ano = substr('23/06/2015', 5, 4); // 2015

 

agora, criaremos duas variaveis - $data1 e $data2, onde aquela terá a data original e esta terá a data acrecida de três dias. E também a variável $dia2

 

$data1 = $ano.$mes.$dia;

$dia2 = $dia + 3;

$data2 = $ano.$mes.$dia2

 

agora é fazer a comparação

 

if($data1 >= $data2){

//faça alguma coisa

}else{

// faça outra coisa

}

 

Espero ter ajudado

 

também é interessante fazer um array de os meses e seus respectivos números de dias, caso extrapole - adicionará um mes.

 

Ps: a aplicação da função substr, para esse exemplo, não foi testada - mas a lógica é essa

 

Qualquer coisa de um grito

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.