Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde ,
aleguem tem idéia de como fazer para verificar as data , no campo eu não posso aceitar data menor que data de hoje !
assim não da certo , se dia for 01 ou 09 da erro fica menor que do de cima !
$entrada = "01/04/2010";
$hoje = "21/05/2010";
if($entrada < $hoje){
echo "Data menor que hoje";
}2 funcoes pra você fazer a ida e volta
function data2banco ($d2b) {
if(!empty($d2b)){
$d2b_ano=substr($d2b,6,4);
$d2b_mes=substr($d2b,3,2);
$d2b_dia=substr($d2b,0,2);
$d2b="$d2b_ano-$d2b_mes-$d2b_dia";
}
return $d2b;
}
function banco2data($b2d) {
if($b2d=="0000-00-00" or empty($b2d)){
$b2d="";
return $b2d;
}else{
$b2d_ano=substr($b2d,0,4);
$b2d_mes=substr($b2d,5,2);
$b2d_dia=substr($b2d,8,2);
$b2d=$b2d_dia.'/'.$b2d_mes.'/'.$b2d_ano;
return $b2d;
}
}
ai ficaria ssim
$entrada = data2banco("01/04/2010");
$hoje = date("Y-m-d");
if($entrada < $hoje){
echo "Data menor que hoje";
}Também podemos criar essa função para formatar as datas através de expressões regulares...
function formata_data($_data) {
// o array $partes é um dos parâmetros de preg_match(), e retorna os padrões encontrados na string.
if (preg_match("/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/", $_data, $partes)) {
$data_formatada = $partes[3]."-".$partes[2]."-".$partes[1];
return $data_formatada;
}
}
$entrada = strtotime(formata_data($data));
$hoje = time();
// daí é só comparar os números...
if ($entrada < $hoje) {
echo "Funciona....";
}
Primeiro obtemos a data formatada para GNU (através de formata_data() que criamos).
Depois obtemos os timestamp´s da data de entrada (um número inteiro que representa essa data) com a função strtotime(), e da data de hoje, através da função time(), que já retorna o timestamp atual.
Assim também fica bem simples.
Abraço.
>
function formata_data($_data) {
// o array $partes é um dos parâmetros de preg_match(), e retorna os padrões encontrados na string.
if (preg_match("/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/", $_data, $partes)) {
$data_formatada = $partes[3]."-".$partes[2]."-".$partes[1];
return $data_formatada;
}
}
Opa, corrigindo...
Substitua essa parte
"/^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/" por "/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/"
Pronto, tudo beleza...
<?php
$data1 = new DateTime( '05/21/2010' ); // Veja, o padrão aqui é o americano (mes/dia/ano).
$data2 = new DateTime( '2010-05-15' ); // Padrão do MySQL também é aceito.
var_dump( $data1 > $data2 );
var_dump( $data1 >= $data2 );
var_dump( $data1 <= $data2 );
var_dump( $data1 < $data2 );
var_dump( $data1 == $data2 );
?>
Saída:
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
se você tah buscando essa data do banco dá pra fazer na sintaxe sql facim!!
Você teria que fazer essa verificação uasndo o formato aaaa-mm-dd, ai funcionaria.