Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galerinha...estou com um probleminha..
Estou tentando fazer um while o qual vai adicionando 1 dia a partir de uma data até terminar o loop, só que está com problema, a data ele add mas não começa a partir da data que eu informo e o mês e ano não está acrescentando e começa em 12/2012....
O código vai abaixo com a imagem como está saindo o resultado.
$i=0;
// Define os valores a serem usados
$data_inicial = '2013-03-15';
$data_final = '2013-03-30';
// Usa a função strtotime() e pega o timestamp das duas datas:
$time_inicial = strtotime($data_inicial);
$time_final = strtotime($data_final);
// Calcula a diferença de segundos entre as duas datas:
$diferenca = $time_final - $time_inicial; // 19522800 segundos
// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 60 * 24)); // 225 dias
// Exibe uma mensagem de resultado:
echo "A diferença entre as datas ".$data_inicial." e ".$data_final." é de <strong>".$dias."</strong> dias<br>";
while($i<$dias){
echo $nextdate = addDayIntoDate($data_inicial,1).'<br>';
$data_inicial=$nextdate;
$i=$i+1;
}
function addDayIntoDate($date,$days) {
$thisyear = substr ( $date, 0, 4 );
$thismonth = substr ( $date, 4, 2 );
$thisday = substr ( $date, 6, 2 );
$nextdate = mktime ( 0, 0, 0, $thismonth, $thisday + $days, $thisyear );
return strftime("%Y%m%d", $nextdate);
/applications/core/interface/imageproxy/imageproxy.php?img=http://gmf.sc.gov.br/portal/resultado.jpg&key=256d582ee6a22cf0a6fbe99b874e17facacdd7ec92d06bae6f8cb9a0a0906b89" alt="resultado.jpg" />
Aguardo resposta..
Obrigado
achei um que pega a data de inicio que eu determino, mas só acrescenta 3 dias e nada mais...
$i=0;
// Define os valores a serem usados
$data_inicial = '2013-03-15';
$data_final = '2013-03-30';
// Usa a função strtotime() e pega o timestamp das duas datas:
$time_inicial = strtotime($data_inicial);
$time_final = strtotime($data_final);
// Calcula a diferença de segundos entre as duas datas:
$diferenca = $time_final - $time_inicial; // 19522800 segundos
// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 60 * 24)); // 225 dias
// Exibe uma mensagem de resultado:
echo "A diferença entre as datas ".$data_inicial." e ".$data_final." é de <strong>".$dias."</strong> dias<br>";
while($i<$dias){
echo somar_dias_uteis($data_inicial,1).'<br>';
//echo $nextdate = somar_dias_uteis($data_inicial,1).'<br>';
//$data_inicial=$nextdate;
$i=$i+1;
}
//echo somar_dias_uteis($data_inicial,1).'<br>';
function somar_dias_uteis($str_data,$int_qtd_dias_somar) {
// Caso seja informado uma data do MySQL do tipo DATETIME - aaaa-mm-dd 00:00:00
// Transforma para DATE - aaaa-mm-dd
$str_data = substr($str_data,0,10);
// Se a data estiver no formato brasileiro: dd/mm/aaaa
// Converte-a para o padrão americano: aaaa-mm-dd
if ( preg_match("@/@",$str_data) == 1 )
{
$str_data = implode("-", array_reverse(explode("/",$str_data)));
}
$array_data = explode('-', $str_data);
$count_days = 0;
$int_qtd_dias_uteis = 0;
while ( $int_qtd_dias_uteis < $int_qtd_dias_somar )
{
$count_days++;
if ( ( $dias_da_semana = gmdate('w', strtotime('+'.$count_days.' day', mktime(0, 0, 0, $array_data[1], $array_data[2], $array_data[0]))) ) != '0' && $dias_da_semana != '6' )
{
$int_qtd_dias_uteis++;
}
}
return gmdate('Y-m-d',strtotime('+'.$count_days.' day',strtotime($str_data)));
}
/applications/core/interface/imageproxy/imageproxy.php?img=http://gmf.siteprofissional.com/portal/resultado2.jpg&key=d558b64a71c13b5bfb9e7249de4c8b4b3a8ab0b915fb1f096f26d45b8200656d" alt="resultado2.jpg" />
fecho galera, agora soma c
$nova_data = implode("-",array_reverse(explode("-",$data_inicial)));
// Explode a barra e retorna três arrays
$data = explode("-", $nova_data);
//Cria três variáveis $ano $mes $dia
list($dia, $mes, $ano) = $data;
// Recria a data invertida
$data = "$ano-$mes-$dia";
$time_inicial = strtotime($data_inicial);
$time_final = strtotime($data_final);
// Calcula a diferença de segundos entre as duas datas:
$diferenca = $time_final - $time_inicial; // 19522800 segundos
// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 60 * 24)); // 225 dias
$i=0;
while($i < $dias)
{
echo $data = date("Y-m-d",mktime(date("H"),date("i"),date("s"),$mes,$dia,$ano)).'<br>';
$dia = $dia+1;
$i=$i+1;
}
ertinho...
Com DateTime é infinitamente mais simples:
@braços