Ir para conteúdo

POWERED BY:

Arquivado

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

espiculo

Verificando se uma data é maior, menor ou igual a outra

Recommended Posts

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";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria que fazer essa verificação uasndo o formato aaaa-mm-dd, ai funcionaria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?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)

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.