Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, gostaria de saber se tem como calcular datas com resultados que vem de uma select que são distribuídos em lista.
$sqlg2 = new Query($bd);
$txtg2 = "SELECT * FROM (SELECT DEMISGUIA FROM HSSGUIA WHERE NNUMEGUIA = :guias) WHERE ROWNUM = 1";
$sqlg2->addParam(':guias',$guias);
$sqlg2->executeQuery($txtg2);
while(! $sqlg2->eof()){
$data11 = $sqlg2->result("DEMISGUIA");
$tpl->DIAS = $data11;
$sqlg2->next();
}
RAFAELA
28/09/17
RAFAELA
18/10/17
RAFAELA
23/10/17
RAFAELA
01/11/17
RAFAELA
06/11/17
RAFAELA
23/11/17
o calculo seria feito na data que for acima de uma para outraola,valeu pela ajuda mas o q eu quero é comparar as datas umas com as outras, a primeira com a segunda e assim adiante.
qual é o resultado final que você espera? assim fica mais facil pra saber como chegar nele
RAFAELA 28/09/17
RAFAELA 18/10/17 = 21 dias
RAFAELA 23/10/17 = 5 dias
RAFAELA 01/11/17 = 9 dias
RAFAELA 06/11/17 = 5 dias
RAFAELA 23/11/17 = 17 dias
todas elas comparando com a data de cima.
ve se conseguir passar para vcs o que eu quero.
Opa amigão,
Fim um teste aqui para dar o mesmo resultado que você postou. Da uma olhada e vê se resolve seu problema.
<?php
function geraTimestamp($data) {
$partes = explode('-', $data);
// mktime (hora, minuto, segundo, mês, dia, ano)
return mktime(0, 0, 0, $partes[1], $partes[2], $partes[0]);
}
function calcDias($dtInicial, $dtFinal) {
$dtInicial = geraTimestamp($dtInicial);
$dtFinal = geraTimestamp($dtFinal);
// Calcula a diferença entra as duas datas
$diferenca = $dtFinal - $dtInicial;
// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 60 * 24));
return $dias;
}
// Aqui eu só carreguei os dados
$arrDatas = array();
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-09-28');
$arrDatas[] = $arrDt;
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-10-18');
$arrDatas[] = $arrDt;
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-10-23');
$arrDatas[] = $arrDt;
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-11-01');
$arrDatas[] = $arrDt;
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-11-06');
$arrDatas[] = $arrDt;
$arrDt = array('nome' => 'RAFAELA', 'dt' => '2017-11-23');
$arrDatas[] = $arrDt;
$count = 0;
$dtInicial = '0000-00-00';
$dtFinal = '0000-00-00';
foreach($arrDatas as $key => $value) {
if ($count === 0) {
$dtInicial = $value['dt'];
$dtFinal = $value['dt'];
} else {
$dtInicial = $dtFinal;
$dtFinal = $value['dt'];
}
$difDias = calcDias($dtInicial, $dtFinal);
echo $value['nome'] . ' ' . $value['dt'] . ' ' . $difDias . ' dia(s)';
echo '<br>';
$count += 1;
}
/*
RAFAELA 2017-09-28 0 dia(s)
RAFAELA 2017-10-18 20 dia(s)
RAFAELA 2017-10-23 5 dia(s)
RAFAELA 2017-11-01 9 dia(s)
RAFAELA 2017-11-06 5 dia(s)
RAFAELA 2017-11-23 17 dia(s)
*/
<?php
$Data1 = new \DateTime( '2017-01-01' );
$Data2 = new \DateTime( '2017-05-05' );
printf(
'%d dias de diferença entre %s e %s',
$Data1->diff( $Data2 )->days,
$Data1->format( 'd/m/Y' ),
$Data2->format( 'd/m/Y' )
);
//Resultado: 124 dias de diferença entre 01/01/2017 e 05/05/2017
OLÁ CONSEGUIR FAZER O ESQUEMA AI, MUITO BRIGADO.
Opa amigão,
Tenta usar a função mktime.
// Calcula a diferença entra as duas datas
$diferenca = $dtFinal - $dtInicial;
// Calcula a diferença de dias