Ir para conteúdo

Arquivado

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

eronventer

Retornar os dias entre duas datas

Recommended Posts

Ae galera,

 

Estou meio confuso aqui, preciso imprimir uma lista contendo os dias decorrentes de 2 datas.

Por exemplo: 10/05/2010 à 07/06/2010

 

Comecei da seguinte forma:

$d1 = explode("-", $data1);
$d2 = explode("-", $data2);
										
$dini = mktime(0, 0, 0, $d1[1], $d1[2], $d1[0]); //TimeStamp da data inicial
$dfim = mktime(0, 0, 0, $d2[1], $d2[2], $d2[0]); //TimeStamp da data final

while($dfim <= $dini)
{
    //Não sei o que fazer aqui
}
Porém isso me gerou um loop infinito e dentro do laço while não consegui retornar os dias

entre as datas filtradas....comecei certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?

//defino data 1

$ano1 = 2006;

$mes1 = 10;

$dia1 = 2;

 

//defino data 2

$ano2 = 2006;

$mes2 = 10;

$dia2 = 27;

 

//calculo timestam das duas datas

$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);

$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);

 

//diminuo a uma data a outra

$segundos_diferenca = $timestamp1 - $timestamp2;

//echo $segundos_diferenca;

 

//converto segundos em dias

$dias_diferenca = $segundos_diferenca / (60 * 60 * 24);

 

//obtenho o valor absoluto dos dias (tiro o possível sinal negativo)

$dias_diferenca = abs($dias_diferenca);

 

//tiro os decimais aos dias de diferenca

$dias_diferenca = floor($dias_diferenca);

 

echo $dias_diferenca;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

falcao544 não é a diferença de dias entre duas datas e sim listar

todas os dias entre duas datas, por exemplo: 10/05/2010 à 07/06/2010

 

No caso minha lista deveria conter:

10/5
11/5
12/5
13/5
14/5
16/5
...
...
...
06/06
07/06

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com DateTime e DateInterval é moleza:

 

$data_inicial = new DateTime( implode( '-', array_reverse( explode( '/', '10/05/2010' ) ) ) );
$data_final   = new DateTime( implode( '-', array_reverse( explode( '/', '07/06/2010' ) ) ) );

while( $data_inicial <= $data_final ) {
echo $data_inicial->format( 'd/m/Y' ) . '<br />' . PHP_EOL;
$data_inicial->add( DateInterval::createFromDateString( '1 days' ) );
}

 

http://www.php.net/manual/en/class.datetime.php

http://www.php.net/manual/en/class.dateinterval.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com DateTime e DateInterval é moleza:

$data_inicial = new DateTime( implode( '-', array_reverse( explode( '/', '10/05/2010' ) ) ) ); $data_final = new DateTime( implode( '-', array_reverse( explode( '/', '07/06/2010' ) ) ) ); while( $data_inicial <= $data_final ) { echo $data_inicial->format( 'd/m/Y' ) . '<br />' . PHP_EOL; $data_inicial->add( DateInterval::createFromDateString( '1 days' ) ); }

http://www.php.net/manual/en/class.datetime.php http://www.php.net/manual/en/class.dateinterval.php

6 anos depois e Voilà!

Vlw!!!

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.