Como calcular diferença de tempo com PHP

Escrito por laura gittins | Traduzido por júlia polachini
  • Compartilhar
  • Tweetar
  • Compartilhar
  • E-mail

Às vezes você precisa saber a diferença de tempo entre duas datas em seu website -- Por exemplo, se você possuir um temporizador de contagem regressiva. O PHP possui várias funções que retornarão datas e tempos em vários formatos, porém eles não permitem muita flexibilidade. Ao combinar essas funções com uma que você mesmo tenha criado, você consegue calcular a diferença entre duas datas e tempo, preservando valores de segundos para anos em variáveis separadas. Você pode depois editá-las ou exibi-las conforme desejar.

Nível de dificuldade:
Moderadamente fácil

Outras pessoas estão lendo

Instruções

  1. 1

    Abra um arquivo HTML e digite o seguinte código no elemento "<body>":

    <?php function timeDiff($first,$last) {

    Isso abre uma tag PHP e define uma nova função chamada "timeDiff" que aceita dois parâmetros. Eles estarão no formato de duas datas com o formato "YYY-MM-DD" e "HH:MM:SS", permitindo que as funções pré definidas do PHP as manipulem.

  2. 2

    Digite o seguinte:

    if ($first > $last) { $tmp = $last; $last = $first; $first = $tmp; }

    Esse bloco assegura que, independente do primeiro parâmetro vir cronologicamente antes ou depois do segundo, a função retorna a uma diferença de tempo positiva.

  3. 3

    Digite o seguinte código:

    $firstTime=strtotime($first); $lastTime=strtotime($last); $years = $days = $hours = $minutes = 0; $seconds=$lastTime-$firstTime;

    As duas primeiras linhas criam um par de variáveis fora de dois parâmetros de data e convertem ambas em um número de segundos passados desde 1 de janeiro de 1970, de modo que os valores possam ser modificados. A terceira linha cria quatro variáveis de contagem e as inicia do zero. A última linha cria uma variável que obtêm a diferença em segundos da primeira à última data.

  4. 4

    Digite o seguinte código:

    while ($seconds >= 31536000) { $years = $years + 1; $seconds = $seconds - 31536000; } while ($seconds >= 86400) { $days = $days + 1; $seconds = $seconds - 86400; } while ($seconds >= 3600) { $hours = $hours + 1; $seconds = $seconds - 3600; } while ($seconds >= 60) { $minutes = $minutes + 1; $seconds = $seconds - 60; }

    Esses blocos decrescem o valor da variável $seconds para calcular quantos anos, dias, horas e segundos se passaram. Como o número de dias em cada mês diferem, não é prático contar esse número.

  5. 5

    Digite o seguinte:

    echo $years . " years, " . $days . " days, " . $hours . " hours, ". $minutes . " minutes, " . $seconds . " seconds."; } ?>

    Essas linhas simplesmente mostram a diferença de tempo para o visitante do site usando a declaração echo e então encerra a função timeDiff e a tag PHP.

  6. 6

    Digite o seguinte:

    echo timeDiff("2011-06-13 12:15:07","2011-07-09 18:35:15"); echo timeDiff("2010-04-16 12:00:00","2011-04-16 12:00:00"); echo timeDiff("2012-12-01 00:00:00",date('Y-m-d h:i:s', time())); echo timeDiff(date('Y-m-d h:i:s', time()),"2012-12-01 00:00:00");

    Essas quatro linhas são exemplos de como a função timeDiff funciona. A primeira calcula a diferença e retorna a zero, 26 dias, seis horas, 20 minutos e oito segundos. A segunda retorna exatamente um ano. A terceira e a quarta usam as funções de data e tempo do PHP para criar um dos parâmetros, o tempo exato no computador do visitante. Note que elas passam os mesmos valores, porém na ordem inversa. Como você verificou para isso no começo da função timeDiff, ambos retornam para o mesmo resultado. No entanto, esses resultados mudam dinamicamente baseados no dia e hora em que o visitante carregou a página.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível