Jump to content
Rzorr

Tempo PHP

Recommended Posts

Boa Tarde,

Estou trabalhando e aprendendo em um projeto próprio, e preciso implementar a contagem de tempo entre uma postagem e outra, confesso que até procurei formas de cmo fazer mas não entendi muito bem, e então achei um script na net pronto, pensei não vou reinventar a roda. Bom o script funciona mais precisa de uns ajustes, estou tentado fazer ele funcionar com uma variávelque resgato do banco de dados, mas não estou conseguindo e acredito que seja por não saber como resgatar a variavel que vem do banco de dados dentro da function. alguém poderia me ajudar.

 

 

 

eu tentei assim

 

$tempo = $linhas['data'];

 

e então onde é $time eu troquei para tempo, porém não funciona.

public static function tempo_corrido($time) {

$now = strtotime(date('m/d/Y H:i:s'));
 $time = strtotime($time);
 $diff = $now - $time;

$seconds = $diff;
 $minutes = round($diff / 60);
 $hours = round($diff / 3600);
 $days = round($diff / 86400);
 $weeks = round($diff / 604800);
 $months = round($diff / 2419200);
 $years = round($diff / 29030400);

if ($seconds <= 60) return"1 min atrás";
 else if ($minutes <= 60) return $minutes==1 ?'1 min atrás':$minutes.' min atrás';
 else if ($hours <= 24) return $hours==1 ?'1 hrs atrás':$hours.' hrs atrás';
 else if ($days <= 7) return $days==1 ?'1 dia atras':$days.' dias atrás';
 else if ($weeks <= 4) return $weeks==1 ?'1 semana atrás':$weeks.' semanas atrás';
 else if ($months <= 12) return $months == 1 ?'1 mês atrás':$months.' meses atrás';
 else return $years == 1 ? 'um ano atrás':$years.' anos atrás';
 }

 

Share this post


Link to post
Share on other sites
16 horas atrás, Marcos_imasters disse:

Então a dúvida que eu tenho não era de como fazer no todo, afinal já esta feito. é como pegar o valor do banco e jogar dentro da function, resgatar o valor eu faço mas não consigo passar ele para dentro da function. Obrigado por enquanto!!!

10 horas atrás, Guilherme Luiz disse:

http://php.net/manual/pt_BR/datetime.diff.php

 

Simples, elegante e nativo. sem "gambiarras"

Obrigado, mas a dificuldade  está em como receber o valor do banco dentro da function. o script funciona

Share this post


Link to post
Share on other sites
21 minutos atrás, Rzorr disse:

Então a dúvida que eu tenho não era de como fazer no todo, afinal já esta feito. é como pegar o valor do banco e jogar dentro da function, resgatar o valor eu faço mas não consigo passar ele para dentro da function. Obrigado por enquanto!!!

Obrigado, mas a dificuldade  está em como receber o valor do banco dentro da function. o script funciona

Amigo voce deve salva a data e hora em timestamp no SQL

 

exemplo para salva no banco:
 

$data ="13/06/2018";

$data_salvar = strtotime(str_replace('/', '-', $data));

 

exemplo conveter time em data

 

echo date("d/m/Y",strtotime(str_replace('/', '-', $data)));

qualquer duvida chama ai 

 

 

 

 

 

ai quando quiser exibir a data normal voce usa echo gmdate("d/m/Y H:i:s", $timestamp);

 

Share this post


Link to post
Share on other sites
//você indica o padrão m/d/Y H:i:s para o atual momento
$now = strtotime(date('m/d/Y H:i:s'));
//aqui você não indica o padrão
$time = strtotime($time);
//Logo essa subtração não vai dar certo
$diff = $now - $time;

Aqui você diz que o $now tem o formato m/d/Y H:i:s mas em $time você não da o formato da data...

 

Padronize a sua data para dentro dos parametros da função http://php.net/manual/es/datetime.diff.php e printe na tela diferença no padrão que você quiser com http://php.net/manual/es/dateinterval.format.php

<?php
//Data vinda do seu BD
$banco  = "13-06-2018 20:30";
//Pego o atual momento
$agora = new DateTime('now');
//Coloco a data no padrao do dateTime
$tempo = new DateTime(date('Y-m-d H:i:s', strtotime($banco)));
//verifico a diferença entre as datas
$intervalo = $agora->diff($tempo);
//printo a data e seu tempo de diferença
echo $intervalo->format('%H horas a %I minutos e %d dias');
?>

Da forma indicada acima você tem o mesmo resultado com 100 linhas a menos.

Não esqueça de marcar "Gostei" :)

Share this post


Link to post
Share on other sites
23 horas atrás, Guilherme Luiz disse:

//você indica o padrão m/d/Y H:i:s para o atual momento
$now = strtotime(date('m/d/Y H:i:s'));
//aqui você não indica o padrão
$time = strtotime($time);
//Logo essa subtração não vai dar certo
$diff = $now - $time;

Aqui você diz que o $now tem o formato m/d/Y H:i:s mas em $time você não da o formato da data...

 

Padronize a sua data para dentro dos parametros da função http://php.net/manual/es/datetime.diff.php e printe na tela diferença no padrão que você quiser com http://php.net/manual/es/dateinterval.format.php


<?php
//Data vinda do seu BD
$banco  = "13-06-2018 20:30";
//Pego o atual momento
$agora = new DateTime('now');
//Coloco a data no padrao do dateTime
$tempo = new DateTime(date('Y-m-d H:i:s', strtotime($banco)));
//verifico a diferença entre as datas
$intervalo = $agora->diff($tempo);
//printo a data e seu tempo de diferença
echo $intervalo->format('%H horas a %I minutos e %d dias');
?>

Da forma indicada acima você tem o mesmo resultado com 100 linhas a menos.

Não esqueça de marcar "Gostei" :)

 

Bom Dia, começo agradecendo a vocês dois que estão me ajudando.

Pegando o código acima que chamei de economia rsrsrsrs

 

Tentei fazer uma  seguinte separação da seguinte forma, não sei se estou totalmente correto na lógica, mas parece funcionar, me corrijam se estiver errado(eu sempre acho que está),

$newtempo = $linhas['data'];
            
//Data vinda do seu BD
$banco  = $newtempo;
//Pego o atual momento
$agora = new DateTime('now');
//Coloco a data no padrao do dateTime
$tempo = new DateTime(date('Y-m-d H:i:s', strtotime($banco)));
//verifico a diferença entre as datas
$intervalo = $agora->diff($tempo);

//printo a data e seu tempo de diferença

$dias =  $intervalo->format('%D dias');
$horas = $intervalo->format('%H horas');
$minutos = $intervalo->format('%I Min');

if($dias >=1){

  echo 'Há ' . $dias;

}elseif ($dias < 1) {

  echo $horas;

}elseif ($horas < 1) {

  echo $minutos;
}

 
?>

 

Share this post


Link to post
Share on other sites
Em 14/06/2018 at 10:25, Rzorr disse:

 

Bom Dia, começo agradecendo a vocês dois que estão me ajudando.

Pegando o código acima que chamei de economia rsrsrsrs

 

Tentei fazer uma  seguinte separação da seguinte forma, não sei se estou totalmente correto na lógica, mas parece funcionar, me corrijam se estiver errado(eu sempre acho que está),


$newtempo = $linhas['data'];
            
//Data vinda do seu BD
$banco  = $newtempo;
//Pego o atual momento
$agora = new DateTime('now');
//Coloco a data no padrao do dateTime
$tempo = new DateTime(date('Y-m-d H:i:s', strtotime($banco)));
//verifico a diferença entre as datas
$intervalo = $agora->diff($tempo);

//printo a data e seu tempo de diferença

$dias =  $intervalo->format('%D dias');
$horas = $intervalo->format('%H horas');
$minutos = $intervalo->format('%I Min');

if($dias >=1){

  echo 'Há ' . $dias;

}elseif ($dias < 1) {

  echo $horas;

}elseif ($horas < 1) {

  echo $minutos;
}

 
?>

 

Alguma idéia para escrever os minutos, já tentei de varias fomas as horas e os dias estão OK.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rodrigofv1994
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "ajax";   $email = $_POST['email']; $senha = $_POST['senha'];   // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); }   $sql = 'INSERT INTO usuarios VALUES (default,'$email','$senha')';   if ($conn->query($sql) === TRUE) {   echo "New record created successfully"; } else {   echo "Error: " . $sql . "<br>" . $conn->error; }   $conn->close(); ?>
    • By Camilavip
      Boa noite, alguém por acaso sabe um modo simples de se desativar um cadastro automaticamente após um período?
      Deixa eu explicar. Eu cadastro um cliente, em que na tabela do banco de dados tem o campo "ativo" onde 1 é ativado e 0 é desativado. Então eu queria cadastrar esse cliente e o ativar, mas que no período de 30 dias por exemplo ele se desativasse sozinho.  Alguém sa8e algo simples nesse sentido?
    • By Camilavip
      Boa noite a todos, estou tendo um probleminha em gravar a senha criptografada, na verdade editar, pois quando gravo vai certo, mas na edição não está dando certo.
      A baixo quando cadastro o cliente é assim, e está indo perfeito.
       
      $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = sha1($_POST['senha']); Mas na hora da edição como está um pouco diferente estou tentando colocar esse sha1 em todo lugar e não está dando
      nome='$_POST[nome]', email='$_POST[email]', login='$_POST[login]', senha='$_POST[senha]', Então no de cima no cadastro está ok, mas na edição não sei mais aonde coloco esse sha1 para dar certo ou é burrice minha mesmo,
    • By Wallcrawler
      Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
       
      Segue o código que estou usando:
      <?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
       
      Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12

      Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
       
      Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
       
      https://www.tmdn.org/tmview/trademark/image/BR500000825642590 
       
      Onde posso estar errando? Obrigado pela atenção de todos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.