Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
Estou precisando validar umas datas.
tipo o limite para inserir dados de um mês anterior é dia 02 do mês seguinte.
tipo eu so posso inserir dados do mês de janeiro ate o dia 02 de fevereiro
e assim por diante.
dai não tenho ideia como calcula isso, será que vcs poderiam me ajudar?
Obrigado amigo eu ate entendi, mas não consegui
pq precisava que ele validasse que fosse apenas o mes anterior e a data limite seja dia 02
quebra essa ai
to parado sem conseguir fazer
Não posso lhe entregar tudo pronto. Considere o primeiro exemplo um "brinde", pois não é um exemplo fácil de encontrar pela internet. Eu sou um que brigo, e muito, à favor do uso da biblioteca DateTime.
Com os exemplos aqui postados e a leitura do manual. Você tem o necessário para fazê-lo.
Tente fazer, e poste suas dúvidas.
>
Não posso lhe entregar tudo pronto. Considere o primeiro exemplo um "brinde", pois não é um exemplo fácil de encontrar pela internet. Eu sou um que brigo, e muito, à favor do uso da biblioteca DateTime.
Com os exemplos aqui postados e a leitura do manual. Você tem o necessário para fazê-lo.
Tente fazer, e poste suas dúvidas.
Minha duvido é como crio a logica com a data limite
tipo
//aki eu passo uma data que seria a data escolhida para incluir
$DT = "31/01/2013";
//sepado dia, mes e ano
$DTE = explode("/", $DT);
$dia = $DTE[0];
$mes = $DTE[1];
$ano = $DTE[2];
//pego mes e ano atual
$mesAtual = date("m");
$anoAtual = date("y");
//aki que nao sei pra onde ir com a data limite sendo dia 02 de casa mês
if ($anoAtual != $ano){
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data invalida para inclusão. ano diferente do atual</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}
if ($mesAtual-$mes > 1){
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data invalida para inclusão. Mês superiar ao prazo</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}No exemplo que eu postei, faz exatamente o que você quer fazer, basta utilizar a sua data.
$DT = "31/01/2013";
Filho, tem como você LER o que está sendo proposto? Ao invés de querer o negócio pronto e feito na mão??
Em momento algum foi usado explode. Foram ao total 5 linhas de código e UMA verificação lógica! Tudo comentadinho. É só ler um pouco e deixar de ser preguiçoso.
>
No exemplo que eu postei, faz exatamente o que você quer fazer, basta utilizar a sua data.
$DT = "31/01/2013";
Meu HEROI !!! hehehe
acho q conseguir
saca aew !!!
$DT = "2013-02-25";
//Data atual
$dataAtual = new DateTime();
//Reserva de duas variáveis com a mesma data. O clone é utilizado para não criar referências entre os objetos e sim duplicá-los.
$dataLimite = clone $dataInsercao = new DateTime($DT);
//Adiciono um mês a data de inserção
$dataLimite->add(new DateInterval('P1M'));
//recrio a data de inserção, para o mês seguinte no dia 02
$dataLimite = new DateTime($dataLimite->format('Y-m-02'));
//faço a pura e simples verificação
if($dataLimite <= $dataAtual) {
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data invalida para inclusão. prazo da data ultrapassado.</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}
$DT = "2013-02-25";
//Data atual
$dataAtual = new DateTime();
//Reserva de duas variáveis com a mesma data. O clone é utilizado para não criar referências entre os objetos e sim duplicá-los.
$dataLimite = clone $dataInsercao = new DateTime($DT);
//Adiciono um mês a data de inserção
$dataLimite->add(new DateInterval('P1M'));
//recrio a data de inserção, para o mês seguinte no dia 02
$dataLimite = new DateTime($dataLimite->format('Y-m-02'));
//faço a pura e simples verificação
if($dataLimite <= $dataAtual) {
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data invalida para inclusão. prazo da data ultrapassado.</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}
dando erro ainda
num to acertando !
Verifique o formato da data, está tudo explicado no manual.
ja olhei
mas num ajudou muito
to voando como passar a data limite
pq esse q vc me ajudou ele so deixa
ate o dia 28 do mes anterior
estou com problemas na hora de comparar as datas
$DT = '2012-12-31';
$DataLimit = date_create(date('Y-m-02'));
date_add($DataLimit, date_interval_create_from_date_string('-32 days'));
$DataL = date_format($DataLimit, 'y-m-d');
$DataLimite = date('Y-m-d', strtotime($DataL));
echo $DataLimite."<br>";
echo $DT ;
//aqui não entra no laço de modo algum, como posso corrigir isso ?
if($DataLimite < $DF){
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data Limite para inclusã ultrapassou os 30 dias.</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}else {
echo "erro !!!!!!!!!!!!!!!!!!!!!!!";
}
RESOLVIDO !!!!
$DT = '2012-12-31';
$DataLimit = date_create(date('Y-m-02'));
date_add($DataLimit, date_interval_create_from_date_string('-32 days'));
$DataL = date_format($DataLimit, 'y-m-d');
$DataLimite = date('Y-m-d', strtotime($DataL));
$I= strtotime($DataLimite);
$II = strtotime($DT);
if($I > $II){
echo mb_convert_encoding ("<p><b><font size='2' face='Arial' color='#FF0000'>OBS.: Data Limite para inclusão ultrapassou os 30 dias.</font></b></p>", "UTF-8");
echo "<Iframe src='/Aprora WEB/php/Preenchimento.php' width='797' height='200' frameborder='0' scrolling='auto' name='myFrame'></Iframe>";
exit;
}Se você explicou direito, você tem apenas duas verificações a fazer:
Se o mês de inserção é igual ao mês vigente ou
Se o dia de hoje é entre 1 e 2 do mês seguinte ao de inserção
$hoje = new DateTime();
$insercao = new DateTime('2012-12-31');
$diferenca_meses = $hoje->format('m') - $insercao->format('m');
// Primeiro teste, se é o mês vigente
!$diferenca_meses
// Segundo teste, se é mês passado e hoje é até dia 02
$diferenca_meses === 1 and $hoje->format('d') == 2
Melhor que isso, só se eu fizesse pra você.
Eu sou um que brigo, e muito, à favor do uso da biblioteca DateTime.
Op! Somos dois!
Passei só pra parabenizar a grande sacada do clone ali. :clap:
E, claro, fazer a faxina no tópico.
Utilize a biblioteca DateTime e a boa e velha matemática.
Vou dar um exemplo bem simples, veja se consegue adaptar a sua solução:
//Data atual
$dataAtual = new DateTime();
//Reserva de duas variáveis com a mesma data. O clone é utilizado para não criar referências entre os objetos e sim duplicá-los.
$dataLimite = clone $dataInsercao = new DateTime('2013-01-20');
//Adiciono um mês a data de inserção
$dataLimite->add(new DateInterval('P1M'));
//recrio a data de inserção, para o mês seguinte no dia 02
$dataLimite = new DateTime($dataLimite->format('Y-m-02'));
//faço a pura e simples verificação
} else {
A data inserção, seria a data referente ao assunto/dado que você iria cadastrar. A data atual e data limite, são para conferência, se está dentro do período permitido.
Saída:
Caso você altere essa linha para qualquer data do mês de fevereiro:
$dataLimite = clone $dataInsercao = new DateTime('2013-02-01');
A saída será: