Ir para conteúdo
Hisoka.

Cálculo de porcentagem com segundos

Recommended Posts

Bom dia!

Eu qria uma ajuda pra criar um cálculo que gere uma porcentagem de 0% até 100% a partir dos segundos. Por ex: Eu tenho uma data limite e a data atual, qnt mais próximo a data atual estiver data final irá aumentando a porcentagem. Abaixo, ambas eu converto em segundos e aplico uma regra de 3, porém em segundos tá dando mais de 1000%. Em minutos funcionava, porem, o contador de porcentagem zerava ao final de cada hora.

O que eu consegui fzr até agr foi isso, baseado no calculo com minutos.

Calculo com segundos:

  $dataFinal = strtotime('2016-09-27 11:58:00');
  $sla = 1;
  echo 'timestamp:'.$time = time().'<br>';
  echo 'Seg. final:'.$dataFinal.'<br>';
  $sla = $sla * 60 * 60;//converto a qntdd de horas para segundos
  $porcentagem = ($time * 100)/$sla;
  echo $porcentagem;

Calculo com minutos:

 $sla = 1;
 $minutoAtual = date('i');
 $sla = $sla * 60;//converto em minutos.
 $porcentagem = ($minutoAtual * 100)/$sla;
 echo $porcentagem;

O calculo com minutos funciona com 1h. Se eu colocar $sla = 2, qnd chegar na metade do tempo, ele zera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para isso você precisa de uma data inicial também. Seriam 3 datas:

Início

Fim

Atual

date_default_timezone_set('America/Sao_Paulo');

$inicio = new DateTime('2016-09-22 17:30:00');
$fim = new DateTime('2016-09-29 14:30:00');
$agora = new DateTime();

$diffInicioFim = $fim->getTimestamp() - $inicio->getTimestamp();
$diffInicioAgora = $agora->getTimestamp() - $inicio->getTimestamp();

$pct = $diffInicioAgora / $diffInicioFim * 100;

echo number_format($pct, 2), PHP_EOL;
  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por asacap1000
      Fala galera, estou com um problema na consulta no banco.
      Tenho uma tabela que dois campos foram criados como timestamp,
      No select eu não consigo trazer os resultados, somente tratando o campo como to_char.
      É obrigatório eu configurar desta forma? 
      Segue o select:
       
      SELECT DISTINCT T.ID, T.FINISH_EVENT,--ASSIM NÃO RETORNA E DÁ ERRO TO_CHAR(T.FINISH_EVENT, 'DD/MM/YYYY HH24:MI'),--ASSIM RETORNA T.GATE_ID, T.GATE_TYPE, I.TYPE, I.VALUE_CONFIRMED, T.SENT, TO_CHAR(T.START_EVENT, 'DD/MM/YYYY HH24:MI'), T.STATUS, T.USERNAME, T.UUID, T.WAY, TO_CHAR(T.START_EVENT, 'YYYYMMDD HH24:MI') FROM EASYGATE.INTGR_EVENT T, EASYGATE.INTGR_ASSET I WHERE T.STATUS = 'CRIADO_EASYGATE' AND T.ID = I.INTEGRATION_EVENT_ID AND I.VALUE_CONFIRMED IS NOT NULL GROUP BY T.ID, T.FINISH_EVENT, T.GATE_ID, T.GATE_TYPE, T.SENT, TO_CHAR(T.START_EVENT, 'DD/MM/YYYY HH24:MI'), TO_CHAR(T.START_EVENT, 'YYYYMMDD HH24:MI'), T.STATUS, T.USERNAME, T.UUID, T.WAY, I.TYPE, I.VALUE_CONFIRMED ORDER BY T.ID DESC
      No PLSql esse é o erro que aparece.
       
       
      Aguardo ajuda :) 
    • Por Kaio Augusto de Castro
      Galera seguinte, eu ja esgotei meu cérebro e não consegui sair do lugar no meu banco tem um campo que chama-se data_criacao e ele é do tipo timestamp mas eu não sei como fazer com que ele grave a data e a hora no banco, o valor eu joguei dentro de um array ficando assim:
      $_SESSION['cad'] = array( 'nome' => $_POST['nome'], 'user' => $_POST['user'], 'pass' => $_POST['pass'], 'email' => $_POST['email'], 'fone' => $_POST['fone'], 'endereco' => $_POST['endereco'], 'cod_bairro' => $_POST['bairro'], 'cidade' => $_POST['cidade'], 'cod_estado' => $_POST['estado'], 'cep' => $_POST['cep'], 'cpf' => $_POST['cpf'], 'cod_status' => $_POST['status'], 'cod_nivel' => $_POST['nivel'], 'data_criacao' => NOW(), 'data_mod' => null, ); Não me recordo bem onde foi que eu li que o comando NOW() insere a data e a hora de acordo com o servidor, mas esta dando esse erro a baixo:
      Fatal error: Uncaught Error: Call to undefined function NOW() in /opt/lampp/htdocs/adm/cad_user.php:29 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/adm/cad_user.php on line 29
       
      Tentei usar o NOW() com e sem as aspas... e nenhum deles foi, se coloco ele com aspas ele deixa cadastrar mas não grava a data e nem a hora, a coluna no banco fica zerada...
       
      Se puderem me ajudar... ficarei muito agradecido... 
       
    • Por Gurandao
      Olá galera, preciso criar um cálculo de correção monetária, já criei a tabela com todos os índices e fatores baseados no site https://api.tjsp.jus.br (Abril/2017).
      Vamos ao que interessa:
      Puxei os valores da tabela, a fórmula do cálculo é: Valor  (dividido) pelo fator do mes que venceu (multiplicado) pelo ultimo indice cadastrado (mes anterior).
      Então temos os valores: Valor (270.72), fator do mês que venceu (48.485963) e fator do mês anterior atual (66.839575).
      Eu criei o seguinte cálculo:
      $correcao =$valor / $fator_vcto * $fator_atual;
      ou seja:
      $correcao = 270.72 / 48.485963 * 66.839575;
      O resultado que ele me apresenta é 276.699454107990 sendo que na calculadora e no excel o valor correto calculado é 373.1968723
       
      Desde já agradeço à todos que puderem me ajudar!
       
    • Por Breno Padovan
      Bom dia a todos,
      tenho uma tabela na seguinte estrutura:
      Field       Type
      itemid    bigint(20) unsigned
      clock    int(11)
      value    double(16,4)
      ns          int(11)
       
      Preciso fazer uma consulta filtrando por data, e estou usando a seguinte query:
      SELECT itemid,
      from_unixtime(clock,'%d/%m/%Y') AS date_data,
      from_unixtime(clock,'%H:%i:%s') AS Time_data,
      Value
      FROM history
      WHERE clock >= FROM_UNIXTIME('01/02/2016') AND clock < FROM_UNIXTIME('01/01/2017')
      and itemid = 24661
       
      Porém não me retorna nenhum valor. Já alterei o padrão de data e nada.
      Onde estaria errando?
       
      Grato,
      Breno Padovan
       
       
       
    • Por diegohamaz1
      Galera ,
       
       
      Seguinte, eu tenho um sistrema de fatura na minha empresa e quando a pessoa paga , eu gero uma recorrência aonde a pessoa é cobrada após o pagamento, segue o codigo abaixo
       
      if($fatura[0]->tipo_plano == "mensal"){ if($mesDaBaixa[1] == "1"){ $dias = " + 26 days"; }else{ $dias = " + 28 days"; } $data_proximo_faturamento = date('Y-m-d', strtotime($dataPagamentoPBaixa . $dias) ); Como podem ver estou fazendo esse tratamento que acho que pode dar algum erro , alguem tem uma solução aonde posso tratar pra ano bisexto e o cara ser cobrado na data correta??
       
       
      Att
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.