PHP: Porcentagem entre data inicial e final

Olá! Seja bem-vindo ao linhadecomando.com. Aproveite e acesse meu novo projeto.

Imagine o seguinte:
Na virada do ano de 2015 para 2016, você fez uma promessa que até o final do ano de 2016 você ia emagrecer… kkk Aí como está chegando o final do ano, você quer saber se ainda dá tempo para alcançar o “corpo ideal” e a porcentagem percorrida para o seu objetivo.

Sabendo disso, criei este post pra te ajudar. Não para perder o peso, é claro!

O código está bem explicativo. Qualquer dúvida deixe nos comentários.

<?php
// função que calcula a diferença em dias de 2 datas
function diferencaEmDias($data1, $data2){
 
    // diferença em segundos entre as datas 2 e 1
    $diferenca = strtotime($data2) - strtotime($data1);
 
    // 1 dia = 86400 segundos
    $segundos_de_um_dia = 60 * 60 * 24;
 
    // total de dias entre as datas
    $dias = intval( $diferenca / $segundos_de_um_dia );
 
    return $dias;
}
 
// datas no padrão MySQL
$data_inicial = "2016-01-01";
$data_final = "2016-12-31";
$data_atual = date("Y-m-d");
 
// retorna número de dias entre a data inicial e final
$dias_dtInicial_x_dtFinal = diferencaEmDias($data_inicial, $data_final);
 
// retorna número de dias entre a data atual e final
$dias_dtAtual_x_dtFinal = diferencaEmDias($data_atual, $data_final);
 
// retorna número de dias entre a data atual e inicial
$dias_dtAtual_x_dtInicial = diferencaEmDias($data_inicial, $data_atual);
 
 
// *** usado para verificacao
//echo "<hr>";
//echo "dtAtual_x_dtInicial: ".$dias_dtAtual_x_dtInicial . " / dtInicial_x_dtFinal: " . $dias_dtInicial_x_dtFinal;
//echo "<hr>";
 
 
//
if( $dias_dtAtual_x_dtInicial == $dias_dtInicial_x_dtFinal ) {
 
    echo "Sua promessa de emagrecimento termina hoje (". $data_final ."). Força! Você consegue! uhuuuu...";
//
}elseif ( $dias_dtAtual_x_dtInicial > $dias_dtInicial_x_dtFinal ){
 
    echo "Sua promessa de emagrecimento terminou em {$data_final}. Espero que tenha conseguido.";
//
}else {
 
    // arredondando até 2 casas decimais
    $porcentagem = round((($dias_dtAtual_x_dtInicial / $dias_dtInicial_x_dtFinal) * 100), 2);
 
    echo "Falta(m) {$dias_dtAtual_x_dtFinal} dia(s) para alcançar o corpo ideal. Concluído {$porcentagem}% do seu objetivo.";
}
?>

Neste post eu mostro como exibir data no padrão brasileiro.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *