Ir para conteúdo

POWERED BY:

Arquivado

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

pedrokl

[Resolvido] 24 horas de prazo

Recommended Posts

Boa tarde, estou fazendo um sistema no qual o cliente cria um arquivo .pdf, nesse momento salva o dia e a hora que ele o fez e assim ele tem o prazo de 24 horas pra edita-lo.

 

Não estou conseguindo fazer essa subtração do dia / hora que ele criou o .pdf para o dia / hora atual.

 

Tentei desse jeito, mas as horas aparecem erradas e decimais:

 

//Dia e hora gravados no banco
$d1  = explode("-", $databd);
$h1 = explode(":", $horabd);

//Dia e hora atual
$datahoje = date("Y-m-d");
$horahoje = date("H:i:s");

$d2 = explode("-", $datahoje);
$h2 = explode(":", $horahoje);

//dat1 é o mktime do banco de dados e dat2 é o mktime do dia de hoje
$dat1 = mktime($h1[0], $h1[1], $h1[2], $d1[1], $d1[2], $d1[0]);
$dat2 = mktime($h2[0], $h2[1], $h2[2], $d2[1], $d2[2], $d2[0]);

//CONFERINDO A HORA

//Subtração dos mktime()
$dataprazo = $dat1 - $dat2;

//24 horas = 86400 segundos;
$prazo24 = 86400;

$prazosub = $prazo24 - $dataprazo;

$prazofinal = strftime("%H:%M", $prazosub);

 

Estou no caminho certo ou existem alguma coisa melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo $data_criado = valor do campo DATE/DATETIME gravado no seu banco:

 

$data_criado = '2010-07-22 00:10'; // exemplo
$milisegundos = 86400000; // 24h em milisegundos
if ((time() - strtotime($data_criado)) < $milisegundos) {
 // ainda em tempo
} else {
 // tempo para editar expirado
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Zrod, na verdade eu acabei nem explicando direito o que eu queria.

 

Verificar se ta no prazo ou não eu consegui, eu queria mostrar pro usuário as horas que ainda restam, por exemplo:

 

---------------------------------------------

pdf | horas que faltam | editar | visualizar

---------------------------------------------

01 | faltam 3:30 | X | X

02 | expirado | | x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de utilizar mktime utilize strtotime

 

Veja

 

$data = $array["data"]; //Data que vem do banco no formato Y-m-d H:i:s

$atual = date("Y-m-d"); //Data atual

 

$diferenca = strtotime($atual) - strtotime($data);

 

$restante = date("d-m-Y H:i:s", strtotime($diferenca));

 

Nem testei, mas tente algo como isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa HJHESS!! :joia:

 

O que você passou aí foi meio caminho andado, eu fiz até a hora da diferença e depois fiz cálculos matemáticos mesmo!

 

Segue aí pra ajudar o pessoal!

 

$data = $dia." ".$hora; //Data que vem do banco no formato Y-m-d H:i:s $atual = date("Y-m-d H:i:s"); //Data atual $diferenca = strtotime($atual) - strtotime($data); //Diferença em segundos do prazo $diferenca = 86400 - $diferenca; //86400 segundos (no caso o prazo é de 24 horas, para diminuir o prazo basta mudar o número) menos o resultado da diferença $minutosbruto = $diferenca/60; //Transformando os segundos restantes em minutos. Bruto no caso porque o resultado normalmente sai acima de 60 minutos (1 hora) $minutosbruto = round($minutosbruto); //Arredondando o número $horasbruto = $minutosbruto/60; //Pegando o resultado da hora em fração $exp = explode(".", $horasbruto); //Dividindo a parte inteira da fracionada $horas = $exp[0]; //A hora no caso fica como parte inteira $minutosfracao = $horasbruto-$exp[0]; //Retirando a parte inteira, deixando apenas a fração, ex: 0.55 $minutos = $minutosfracao*60; //Multiplicando a fração por 60(segundos) você tem o total de minutos final echo "<script>alert('Restam $horas:$minutos')</script>"; //Só pra constar o resultado[/codebox]Obrigado pelas respostas de todos, espero que ajude alguém!!Resolvido! :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma sugestão.

 

Não daria de mudar isso:

$diferenca = 86400 - $diferenca; //86400 segundos (no caso o prazo é de 24 horas, para diminuir o prazo basta mudar o número) menos o resultado da diferença 

$minutosbruto = $diferenca/60; //Transformando os segundos restantes em minutos. Bruto no caso porque o resultado normalmente sai acima de 60 minutos (1 hora)

$minutosbruto = round($minutosbruto); //Arredondando o número

$horasbruto = $minutosbruto/60; //Pegando o resultado da hora em fração
$exp = explode(".", $horasbruto); //Dividindo a parte inteira da fracionada
$horas = $exp[0]; //A hora no caso fica como parte inteira

$minutosfracao = $horasbruto-$exp[0]; //Retirando a parte inteira, deixando apenas a fração, ex: 0.55 
 
$minutos = $minutosfracao*60; //Multiplicando a fração por 60(segundos) você tem o total de minutos final

echo "<script>alert('Restam $horas:$minutos')</script>"; //Só pra constar o resultado

por isso:

 

$diferenca = 86400 - $diferenca; //86400 segundos (no caso o prazo é de 24 horas, para diminuir o prazo basta mudar o número) menos o resultado da diferença 
$restante = date("H:i", $diferenca); // talvez seja necessário utilizar strtotime $restante = date("H:i", strtotime($diferenca));

echo "<script>alert('Restam $horas:$minutos')</script>"; //Só pra constar o resultado

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.