Ir para conteúdo

POWERED BY:

Arquivado

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

marcos_lama

[Resolvido] comparar data

Recommended Posts

Pessoal, estou com uma dúvida em uma parte de um sistema que to fazendo.

 

Tenho um sistema, onde o usúario realiza um cadastro do serviço que funciona assim:

 

O usuario prenche os campos com a data do servico, etc...

 

Só que ele não pode prencher quando passa o prazo que é no dia 18 de todo mes

 

exemplo:

 

ele fez servico dia 15/05, 16/05, 17/05 ele só pode prencher esses servicos até o dia 18/05 quando passar do dia 18/05 tem que dar um aviso dizendo que o prazo foi expirado, e isso é todo mês.

 

nao to conseguindo fazer baseado em todo mes, pq sempre o mes muda senão seria só pegar a data atual e verificar se a data do servico era menor.

 

o periodo que pode ser lançado é o seguinte

 

vai do dia 17/05 até o dia 18/06 e por ai vai

 

17/05 até o dia 18/06

17/06 até o dia 18/07

17/07 até o dia 18/08

 

então para entender:

se passar do dia 18/06 ele nao pode mais lancar servicos que foram realizados antes desta data

se passar do dia 18/07 ele nao pode mais lancar servicos que foram realizados antes desta data

se passar do dia 18/08 ele nao pode mais lancar servicos que foram realizados antes desta data

 

e vai assim indo todos meses...

 

as datas são ano/mes/dia em campo unico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez te ajuda. Tente adaptar a sua necessidade:

$dia_limite_lancamento = "10";
$data_atual = date("d/m/Y");

$data_atual_converte = explode('/', $data_atual);
$ano_data_atual = $data_atual_converte['2']; //Extrai ano da Data Atual
$mes_data_atual = $data_atual_converte['1']; //Extrai mes da Data Atual
$dia_data_atual = $data_atual_converte['0']; //Extrai dia da Data Atual
$data_deslocamento_converte = explode('/', $data_deslocamento);
$ano_data_deslocamento = $data_deslocamento_converte['2']; //Extrai ano da Data de Deslocamento
$mes_data_deslocamento = $data_deslocamento_converte['1']; //Extrai mes da Data de Deslocamento
$dia_data_deslocamento = $data_deslocamento_converte['0']; //Extrai dia da Data de Deslocamento

if ($ano_data_deslocamento < $ano_data_atual){
if (($ano_data_deslocamento) < ($ano_data_atual-1)){
   $erro=1;
   echo "<center>Verifique o Ano da Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
}

if (($ano_data_deslocamento) == ($ano_data_atual-1)){
if (($mes_data_deslocamento != "12") OR ($mes_data_atual != "01")) {
   $erro=1;
   echo "<center>Verifique a Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
}

if (($ano_data_deslocamento) == ($ano_data_atual-1)){
if (($mes_data_deslocamento == "12") AND ($mes_data_atual == "01")) {
if ($dia_data_atual > $dia_limite_lancamento){
if ($mes_data_deslocamento != $mes_data_atual) {
   $erro=1;
   echo "<center>Verifique a Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
  }
 }
}

if (($ano_data_deslocamento) == ($ano_data_atual-1)){
if (($mes_data_deslocamento == "12") AND ($mes_data_atual == "01")) {
if ($dia_data_atual <= $dia_limite_lancamento){
if ($mes_data_deslocamento != "12") {
   $erro=1;
   echo "<center>Verifique a Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
  }
 }
}

if ($ano_data_atual == $ano_data_deslocamento){
if ($dia_data_atual > $dia_limite_lancamento){
if (($mes_data_deslocamento < $mes_data_atual) OR ($mes_data_deslocamento > $mes_data_atual)) {
   $erro=1;
   echo "<center>Verifique a Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
 }
}

if ($ano_data_atual == $ano_data_deslocamento){
if ($dia_data_atual <= $dia_limite_lancamento){
if (($mes_data_deslocamento) < ($mes_data_atual-1)){
   $erro=1;
   echo "<center>Verifique a Data de Deslocamento!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
 }
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra que todos os if'-'

?

 

Procurei essa solução e mais facil pra você usar.

site: phpbrasil

Comparação de datas com PHP e a função strtotime

 

Muitas pessoas que estão iniciando no PHP têm essa dúvida e acabam achando algo difícil trabalhar com datas. Na verdade, não é tão complicado...

 

Antes de mais nada, algumas considerações:

 

Em nosso exemplo, temos que saber que se o ano for escrito com 2 dígitos, os valores entre 00-69 serão passados a 2000-2069 e os valores entre 70-99 serão passados a 1970-1999.

A data terá de estar obrigatoriamente entre 13-12-1901 20:45:54 GMT e 19-01-2038 03:14:07 GMT. (Estes datas correspondem aos valores mínimos e máximos de um inteiro de 32 bits).

 

Comparação de datas seguindo os parâmetros acima:

 

// primeira data

$dataI= '2009-09-15';

 

// trabalhando a primeira data

$I= strtotime($dataI );

 

// segunda data

$dataII= '2000-12-25';

 

// trabalhando a segunda data

$II= strtotime($dataII);

 

if ($I == $II) echo $dataI.' = '.$dataII;

else echo ($I > $II) ? $dataI.' > '.$dataII : $dataI.' < '.$dataII;

 

Até mais, esse foi ainda um exemplo simples de comparar datas, mas um dos mais eficazes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse codigo que me mandou é só mudar as variaveis e o dia limite ?

Praticamente isso, mas precisa fazer algumas alterações/adaptações de acordo com suas necessidades.

 

Vamos ver se consigo te ajudar. Temos que ficar atento a questão dos meses de dezembro e janeiro (virada de ano) mas isso vamos discutir futuramente.

se passar do dia 18/06 ele nao pode mais lancar servicos que foram realizados antes desta data

 

Vamos considerar Data Atual sendo 23/06/2012 e Data do Serviço 15/06/2012

$dia_limite_lancamento = "18"; // Dia maximo de qualquer mês para lançamento
$data_atual = date("d/m/Y"); // Data atual do dia em que o usuário está efetuando o lançamento
$data_servico = $_POST["data_servico"]; // Data do serviço digitada pelo usuário

$data_atual_converte = explode('/', $data_atual);
$ano_data_atual = $data_atual_converte['2']; // Extrai ANO da Data Atual
$mes_data_atual = $data_atual_converte['1']; // Extrai MÊS da Data Atual
$dia_data_atual = $data_atual_converte['0']; // Extrai DIA da Data Atual
$data_servico_converte = explode('/', $data_servico);
$ano_data_servico = $data_servico_converte['2']; // Extrai ANO da Data Serviço
$mes_data_servico = $data_servico_converte['1']; // Extrai MÊS da Data Serviço
$dia_data_servico = $data_servico_converte['0']; // Extrai DIA da Data Serviço

 

if ($ano_data_servico < $ano_data_atual){ // Exemplo: 2011 < 2012
if (($ano_data_servico) < ($ano_data_atual-1)){ // Exemplo: 2010 < 2012
$erro=1;
   echo "<center>Verifique o Ano da Data de Serviço!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
}

Nesta verificação comparamos os ANOS das 02 datas (Data Atual e Data Serviço) para que diferença entre ambas não seja superior a 1. Se for maior que 1 mostra erro, caso contrário não. Devemos considerar que poderá ocorrer a situação de ter Data Atual: 02/01/2012 e Data do Serviço: 28/12/2011 onde ambas as datas estão em um intervalo válido, mas em anos diferentes.

 

if (($ano_data_servico) == ($ano_data_atual-1)){ // Ano Serviço: 2011 e Ano Atual: 2012
if (($mes_data_servico != "12") OR ($mes_data_atual != "01")) {
   $erro=1;
   echo "<center>Verifique a Data de Serviço!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }
}

Situação idêntica a anterior, sendo que aqui verificamos o mês (Data Atual: 02/01/2012 e Data do Serviço: 28/12/2011).

 

Tente adaptar os demais códigos. Talvez seja necessário implementar novos códigos. Vai implementando aí e qualquer dúvida estamos a disposição. Um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha sugestão...

 

$dataservico = strtotime("18-06-2012");

$dia = date('d', $dataservico); // dia da data servico

$limite = strtotime("18-" . date("m-Y", $dataservico)); // Dia 18 do mês do servico


/*
 Se o dia do serviço for igual ou posterior ao dia 18, então o limite vai pro mes que vem...
*/
if ($dia >= 18) {
$limite = strtotime("+1 month", $limite); // aumento 1 mês ao limite
}

if (time() <= $limite) {
echo "Ainda está em tempo";
} else {
echo "expirou";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui utilizando o codigo assim, funcionou.

//Expira data
$dataservico = strtotime("$data");

$dia = date('d', $dataservico); // dia da data servico

$limite = strtotime("18-" . date("m-Y", $dataservico)); // Dia 18 do mês do servico


/*
 Se o dia do serviço for igual ou posterior ao dia 18, então o limite vai pro mes que vem...
*/
if ($dia >= 18) {
       $limite = strtotime("+1 month", $limite); // aumento 1 mês ao limite
}

if (time() <= $limite) {
} else {
       echo "<font color=red><b>
	  <center>O prazo para cadastrar o servico expirou <img src='../imagens/exclamacao.gif' /></center>
	  </font></b>";
	exit;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô e nem da um credito pro menino?? Pelo menos citasse o nick do cara, desse um "+" no post dele pra melhorar a reputação... essas coisas rsrs

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.