Ir para conteúdo

Arquivado

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

jumpo

Calcular difença da data e hora

Recommended Posts

Bom dia pessoal,

 

Preciso fazer na data_inicial = 2015-10-22 17:07:00 com a data_final = 2015-10-27 10:07:00 calcular a pocentagem de quanto tempo corrido já se passou.

 

Exemplo quando atingir 50 % desse tempo eu preciso notificar por e-mail na regra que desejo fazer, tente fazer talvez eu esteja fazendo da forma errada.

 

 

segue meu exemplo.

 

<?php
// Define os valores a serem usados
$data_inicial = "2015-10-26";
$data_final = "2015-10-27";

// Cria uma função que retorna o timestamp de uma data no formato AAAA-MM-DD
function geraTimestamp($data) {
$partes = explode('-',$data);
return mktime(0, 0, 0, $partes[1], $partes[2], $partes[0]);
}

// Usa a função criada e pega o timestamp das duas datas:

$time_inicial = geraTimestamp($data_inicial);
$time_final = geraTimestamp($data_final);

// Calcula a diferença de segundos entre as duas datas:

$diferenca = $time_final + $time_inicial; // 19522800 segundos

$total = $time_inicial * 100 / $diferenca;

// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 48 * 24)); // 225 dias

$teste = (int)floor( $total );

// Exibe uma mensagem de resultado:
if($teste >= 50)
echo "<b><font color=\"#FF0000\"> envio </font></b>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que a LÓGICA seja essa:

<?
$dt_i = '20151028';
$hr_i = '170700';
$dt_f = '20151029';
$hr_f = '100700';

$dif = ($dt_f.''.$hr_f) - ($dt_i.''.$hr_i);
echo $dif.' = 100%<br>';

$data = ($dt_i.''.$hr_i) - date('YmdHms');

$res = ($data * 100) / $dif;
echo $res.' %';

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então parceiro talvez não me expressei certo, preciso fazer na data_inicial = 2015-10-22 17:07:00 com a data_final = 2015-10-31 10:07:00 calcular a pocentagem de quanto tempo já se passou com a data e hora atual do servidor.

 

Digamos que:

 

data_inicial = 2015-10-22 17:07:00

 

data_hoje = 2015-10-28 14:25:00

 

data_expiração = 2015-10-31 10:07:00

 

Então dessa forma eu preciso saber quanto é pocentagem desse tempo se passou.

Compartilhar este post


Link para o post
Compartilhar em outros sites


$hoje = new DateTime();

$inicio = new DateTime('2015-10-22 17:07:00');

$fim = new DateTime('2015-10-31 10:07:00');

 

$decorrido = $hoje->getTimestamp() - $inicio->getTimestamp();

$tempoTotal = $fim->getTimestamp() - $inicio->getTimestamp();

$pct = $decorrido / $tempoTotal * 100;

 

echo number_format($pct, 1);

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.