pedrokl 0 Denunciar post Postado Julho 22, 2010 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
zrod 0 Denunciar post Postado Julho 22, 2010 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
pedrokl 0 Denunciar post Postado Julho 22, 2010 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
HJHESS 0 Denunciar post Postado Julho 22, 2010 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
pedrokl 0 Denunciar post Postado Julho 22, 2010 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
HJHESS 0 Denunciar post Postado Julho 22, 2010 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