Ir para conteúdo

POWERED BY:

Arquivado

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

felipebmfaria

[Resolvido] Cadastro de datas com Intervalo

Recommended Posts

Aqui não, Kineri.

Dependendo do intervalo ele nao mostra com exatidão, ele 'come' o ultimo dia.

 

Observe

 

Data Inicial: 2010-09-01
Data Final: 2010-10-06
Dias de evento: Quartas-Feiras
Dias de diferenca: 35
Resultado: 01/09/2010, 08/09/2010, 15/09/2010, 22/09/2010, 29/09/2010, 06/10/2010
Aqui tá ok!

 

agora,

Data Inicial: 2010-09-01
Data Final: 2010-10-13
Dias de evento: Quartas-Feiras
Dias de diferenca: 41
Resultado: 01/09/2010, 08/09/2010, 15/09/2010, 22/09/2010, 29/09/2010, 06/10/2010
não incluiu o dia 13, que seria a data_final

 

Percebe?

 

Parece que apenas 'come' a ultima data se o intervalo for grande, se for intervalo curto funciona normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, com o código aqui da minha máquina funcionou. Olha o print.

Imagem Postada

Vou postar denovo.

<?php

$dataInicio = '2010-09-01';
$dataFim = '2010-10-13';

$dias = array("Todos","Domingos","Segundas-Feiras","Terças-Feiras","Quartas-Feiras","Quintas-Feiras","Sextas-Feiras","Sábados");
$diaDaSemana = 4; 

$dataInicioTimestamp = strtotime($dataInicio); //conversão necessária para a diferença de dias
$dataFimTimestamp = strtotime($dataFim); //conversão necessária para a diferença de dias
$diasDeDiferenca = floor(($dataFimTimestamp - $dataInicioTimestamp)/86400); //60*60*24=86400

echo '<p><strong>Data Inicial:</strong> '.$dataInicio.'</p>';
echo '<p><strong>Data Final:</strong> '.$dataFim.'</p>';
echo '<p><strong>Dias de evento:</strong> '.$dias[$diaDaSemana].'</p>';
echo '<p><strong>Dias de diferença:</strong> '.$diasDeDiferenca.'</p>';

list($anoInicio, $mesInicio, $diaInicio) = explode('-',$dataInicio);

$diasOk = array();

for($i=0;$i<=$diasDeDiferenca;$i++){
  $dataComparacao = mktime(0,0,0,$mesInicio,$diaInicio+$i,$anoInicio);
  
  if($diaDaSemana == 0){
    $diasOk[] = date('d/m/Y',$dataComparacao);
  }else{
    if($dias[date('w',$dataComparacao)+1] == $dias[$diaDaSemana]){
      $diasOk[] = date('d/m/Y',$dataComparacao);
    }
  }
}

echo '<p><strong>Resultado:</strong> '.implode(', ',$diasOk).'</p>';
?>
Não me lembro se alterei alguma coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, incrivel, usei este codigo que voce postou agora e veja o resultado:

 

Data Inicial: 2010-09-01

 

Data Final: 2010-10-13

 

Dias de evento: Quartas-Feiras

 

Dias de diferença: 41

 

Resultado: 01/09/2010, 08/09/2010, 15/09/2010, 22/09/2010, 29/09/2010, 06/10/2010

 

????? Navegadores???? Acredito que não.

Versão do Apache????

Que doideira. :o

 

Veja que há diferença no 'dias diferença'.

 

Coloquei o script no ar, ele pegou o dia 13 normalmente, o que pode ser? Meu servidor Local?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta aumentar um ou dois dias na sua data final, e veja se o dia 13/10 aparece ou não.

 

Se não aparecer pode ser "problema" no seu ambiente.

 

Se for isso, não faço ideia do que pode estar acontecendo.

 

(a propósito, Apache: v.2.2.11, PHP: v.5.3.0)

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.