Ir para conteúdo

POWERED BY:

Arquivado

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

tony_lu

Listar datas de um intervalo

Recommended Posts

Ola galera, preciso listar na tela datas de um período inicial e final, vamos supor o usuario seleciona a data inicial "2015-10-30" e final "2015-11-11" e na tela será exibido assim:

 

2015-10-30

2015-10-31
2015-11-01
2015-11-02
2015-11-03
2015-11-04
2015-11-05
2015-11-06
2015-11-07
2015-11-08
2015-11-09
2015-11-10
2015-11-11

 

Sem banco de dados nem nada... tentei assim, no meu server local funcionou porém no servidor de hospedagem dá um erro, segue:

 //Star date    $dateStart  = '30/10/2015';
    $dateStart  = implode('-', array_reverse(explode('/', substr($dateStart, 0, 10)))).substr($dateStart, 10);
    $dateStart  = new DateTime($dateStart);


    //End date
    $dateEnd  = '11/11/2015';
    $dateEnd  = implode('-', array_reverse(explode('/', substr($dateEnd, 0, 10)))).substr($dateEnd, 10);
    $dateEnd  = new DateTime($dateEnd);


    //Prints days according to the interval
    $dateRange = array();
    
    $i = 0; // Contador
    while($dateStart <= $dateEnd){
        $dateRange[] = $dateStart->format('Y-m-d');
        $dateStart = $dateStart->modify('+1day');
        echo $dateRange[$i];
        echo "<br>"; 
        $i += 1;
    }

O erro que dá:

Fatal error: Call to a member function format() on a non-object in /home/achefacil/public_html/calendario.php on line 35

 

Esta linha se refere a:

$dateRange[] = $dateStart->format('Y-m-d');

Alguem sabe porque esta dando este erro? Tem alguma forma mais facil de fazer?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa ja consegui, segue para deixar documentado para ajudar quem um dia precisar:

 

<?php
$dini = mktime(0,0,0,$mes_ini,$dia_ini,$ano_ini); // timestamp da data inicial
$dfim = mktime(0,0,0,$mes_fim,$dia_fim,$ano_fim); // timestamp da data final


while($dini <= $dfim)//enquanto uma data for inferior a outra
{      
   $dt = date("d/m/Y",$dini);//convertendo a data no formato dia/mes/ano
   echo $dt."<br>"; //exibindo a data
   $dini += 86400; // adicionando mais 1 dia (em segundos) na data inicial
}
?>

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é independente da versão...

 

A função DateTime->format só funciona a partir do PHP 5.3.28 se não me falha a memória. Pode ser que seu localhost tenha esse recurso e seu server de produção não. ;)

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.