Ir para conteúdo

POWERED BY:

Arquivado

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

raphaelwilker

[Resolvido] Comparação de datas

Recommended Posts

Oi Pessoal !

Tudo em riba ?

Bom estou tendo duvidas de como eu posso comparar duas datas.

Tem alguma função que já faça isso ?

Queria compara se tal data já passou ou não XD

Bom é isso XD

hehe XD

Compartilhar este post


Link para o post
Compartilhar em outros sites
public function date_diff($startDate, $endDate, $delimiter = "/") {
	$startDateArray = explode($delimiter, $startDate);
	$endDateArray = explode($delimiter, $endDate);

	$startDateTimestamp = mktime(0, 0, 0, $startDateArray[1], $startDateArray[0], $startDateArray[2]);
	$endDateTimestamp = mktime(0, 0, 0, $endDateArray[1], $endDateArray[0], $endDateArray[2]);

	return ($nDataInicial > $nDataFinal) ? true : false;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que assim vai:

function data($data){
$atual=date("d/m/Y");
if($data<$atual){
$retorno="A data ja passou";
}elseif($data>$atual){
$retorno="A data esta para chegar";
}
return $retorno;
}
echo data("28/05/2010");

Acho que isso deve servir de base...Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu cara muito obrigado !

Vou estudar ele para tentar estudar a sua logica !

as muito obrigado !

 

 

public function date_diff($startDate, $endDate, $delimiter = "/") {
	$startDateArray = explode($delimiter, $startDate);
	$endDateArray = explode($delimiter, $endDate);

	$startDateTimestamp = mktime(0, 0, 0, $startDateArray[1], $startDateArray[0], $startDateArray[2]);
	$endDateTimestamp = mktime(0, 0, 0, $endDateArray[1], $endDateArray[0], $endDateArray[2]);

	return ($nDataInicial > $nDataFinal) ? true : false;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize DateTime.

 

$data1 = new DateTime( '2010-05-27' );
$data2 = new DateTime( '2011-05-27' );

var_dump( $data1 > $data2 );
var_dump( $data1 >= $data2 );
var_dump( $data1 < $data2 );
var_dump( $data1 <= $data2 );
var_dump( $data1 == $data2 );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou verificar com este também cara!

Utilize DateTime.

 

$data1 = new DateTime( '2010-05-27' );
$data2 = new DateTime( '2011-05-27' );

var_dump( $data1 > $data2 );
var_dump( $data1 >= $data2 );
var_dump( $data1 < $data2 );
var_dump( $data1 <= $data2 );
var_dump( $data1 == $data2 );

 

Bom gente não estou conseguindo acertar !

não sei porque !

Deve ser por algum erro de logica besta !

Se vocês puderem me ajudar XD

Vou exibir o meu codigo:

<?php
										echo "<h3>Para ver o edital basta clicar no nome do processo</h3>";
										$query = mysql_query("SELECT * FROM cad_curso");
										while($exibe = mysql_fetch_assoc($query))
										{
											$data = $exibe['data_final'];
											$dataini = $exibe['data_inicial']; 
											$troca = "/";
											$novastring = str_replace($troca,"",$data);
											$novastring2 = str_replace($troca,"",$dataini);
											$datainicialstamp = mktime(0,0,0,$novastring2[1],$novastring2[0],$novastring2[2]);
											$datafinalstamp = mktime(0,0,0,$novastring[1],$novastring[0],$novastring[3]);
											$datatoday = date("dmY");
											$dataatualstamp = mktime(0,0,0,$datatoday[1],$datatoday[0],$datatoday[2]);
											if(($datafinalstamp>=$dataatualstamp)&&($datainicialstamp<=$dataatualstamp))
{
																																
												echo "</p><a name='link' onclick='chama(\"".$exibe['id']."\")'>".$exibe['data_final']."</a> para fazer a incrisção clique <a name='link2'>aqui</a></p>";	
												
											}
}
											
										?>
Realmente eu devo estar fazendo alguma meleca que não estou vendo O.o !

Vou verificar com este também cara!

 

Utilize DateTime.

 

$data1 = new DateTime( '2010-05-27' );
$data2 = new DateTime( '2011-05-27' );

var_dump( $data1 > $data2 );
var_dump( $data1 >= $data2 );
var_dump( $data1 < $data2 );
var_dump( $data1 <= $data2 );
var_dump( $data1 == $data2 );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca por isso:

 

da uma lida nessas funções depois pra entender melhor o funcionamento delas. ;)

 

(...)
$novastring = explode('/',$data);
$novastring2 = explode('/',$dataini);

$datainicialstamp = mktime(0,0,0,$novastring2[1],$novastring2[0],$novastring2[2]);

$datafinalstamp = mktime(0,0,0,$novastring[1],$novastring[0],$novastring[2]);

$dataatualstamp = time();

if(...

So pra esclarecimento do que você tava fazendo de errado:

 

$datatoday = date("dmY"); // 27052010

$datatoday[1],$datatoday[0],$datatoday[2];

 

a saida disso é:

 

$datatoday[0]-> 2

$datatoday[1]-> 7

$datatoday[2]-> 0

 

ou seja, nada de dia, mes e ano. o índice de uma string retorna o caractere daquela posição. // $string = 'abcdef'; echo $string[5]; reproduz 'f'

 

e pra pegar a time do dia atual não precisava daquela volta (e que estava errada tbm), somente time() ja retorna isso.

 

valeu ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valeu !

vou tentar e depois dou o retorno XD

só um minuto !

troca por isso:

 

da uma lida nessas funções depois pra entender melhor o funcionamento delas. ;)

 

(...)
$novastring = explode('/',$data);
$novastring2 = explode('/',$dataini);

$datainicialstamp = mktime(0,0,0,$novastring2[1],$novastring2[0],$novastring2[2]);

$datafinalstamp = mktime(0,0,0,$novastring[1],$novastring[0],$novastring[2]);

$dataatualstamp = time();

if(...

So pra esclarecimento do que você tava fazendo de errado:

 

$datatoday = date("dmY"); // 27052010

$datatoday[1],$datatoday[0],$datatoday[2];

 

a saida disso é:

 

$datatoday[0]-> 2

$datatoday[1]-> 7

$datatoday[2]-> 0

 

ou seja, nada de dia, mes e ano. o índice de uma string retorna o caractere daquela posição. // $string = 'abcdef'; echo $string[5]; reproduz 'f'

 

e pra pegar a time do dia atual não precisava daquela volta (e que estava errada tbm), somente time() ja retorna isso.

 

valeu ;)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu gente XD

segue abaixo a resolutção que eu fiz XD

:lol:

 

<?php
										echo "<h3>Para ver o edital basta clicar no nome do processo</h3>";
										$query = mysql_query("SELECT * FROM cad_curso");
										while($exibe = mysql_fetch_assoc($query))
										{
											$data = $exibe['data_final'];
											$dataini = $exibe['data_inicial'];
											$datatoday = date("d/m/Y") ;
											$novastring = explode('/',$data);
											$novastring2 = explode('/',$dataini);
											$datainicialstamp = mktime(0,0,0,$novastring2[1],$novastring2[0],$novastring2[2]);
											$datafinalstamp = mktime(0,0,0,$novastring[1],$novastring[0],$novastring[2]);
											$datatoday = time();
											if(($datafinalstamp>$datatoday)&&($datainicialstamp<$datatoday))
											{
												
												echo "</p><a name='link' onclick='chama(\"".$exibe['id']."\")'>".$exibe['descricao']."</a> para fazer a incrisção clique <a name='link2'>aqui</a></p>";	
												
											}
										}
											
										?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tivesse falado na primeira mensagem se tratava de datas dentro do mysql, a solução seria muito mais simples hehe. Na maioria dos casos é melhor fazer a filtragem de dados direto no mysql do que no PHP.

 

1º - Código mais limpo e direto.

2º - Melhor performance, uma vez que você puxa do mysql APENAS o que você quer.

 

Veja como ficaria o mesmo código, agora fazendo o tratamento direto no mysql.

(O tipo dos campos `data_inicial` e `data_final` tem que ser DATE ou DATETIME para funcionar)

 

<?php
echo '<h3>Para ver o edital basta clicar no nome do processo</h3>';

$query  = mysql_query( "SELECT `id`,`descricao`,`data_inicial`,`data_final` FROM `cad_curso` WHERE CURDATE() BETWEEN `data_inicial` AND `data_final`" );

while( $row = mysql_fetch_assoc( $query ) ) {
printf( '</p><a name="link" onclick="chama(%d)">%s</a> para fazer a incrisção clique <a name="link2">aqui</a></p>', $row['id'], $row['descricao'] );
}
?>

 

Muito mais simples e eficiente, além da performance ser melhor.

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.