Manipulando datas facilmente

Prefácio

Tenho visto que muitas pessoas têm tido problemas ao trabalhar com data. Seja pelo fato de não saber ao certo quantos dias o mês tem ou por se atrapalhar na contagem de dias de um mês para outro.

O que algumas pessoas não sabem, é que o PHP é extremamente bom com datas.

Para realizarmos nossa experiência de hoje, precisaremos de apenas duas funções!

“Duas funções, Rafael?” Sim, duas funções!

E são as seguintes: date() e mktime(). É bastante provável que a maioria das pessoas já tenha utilizado as duas, mas muita gente não sabe o poder que as duas têm juntas!

Conceito

Já ouviu falar na Unix Epoch? A “Época Linux” começou dia 1º de Janeiro de 1970.
“Ta, e daí?”
E daí que graças a ela, podemos efetuar cálculos precisos de data. Todas as vezes que você invoca a função mktime(), ela retorna o total de segundos que se passaram desde o começo da Unix Epoch. Mas do que adiantam os segundos? Aí que vem a parte boa. A função date() pode formatar datas baseadas na Unix Epoch!
Colocando a mão na massa
Vamos supor que queremos descobrir que dia será daqui 47 dias. Vamos usar o mktime() com seus devidos parâmetros para encontrar a data de hoje. Sempre assumiremos horas, minutos e segundos com 0 (zero), porque isto indica exatamente o início do dia. :)

Depois de encontrar a data, iremos calcular quanto é 47 dias em segundos. Depois somamos e convertemos para uma data formatada usando date().

<?php

	$hoje = mktime(0, 0, 0, 11, 5, 2007); // dia 05/11/2007 em Unix Time Stamp
	$somar = 60 * 60 * 24 * 47; // 60 segundos * 60 minutos * 24 horas * 47 dias

	$daqui47dias = $hoje + $somar;

	echo date('d/m/Y', $daqui47dias);

?>

Mais fácil que formatar computador! ;)

Conclusão

Simples e eficiente. É claro que você pode explorar muito mais possibilidades com estas duas funções… E também é claro que ficou muito simples este tutorial, mas é apenas o primeiro. Não queria deixar a galera no vácuo…
O próximo vai ser sobre Expressões Regulares e prometo que vai ser mais bacana! :)

Muito obrigado pessoal!

Um forte abraço e fiquem com Deus!
Rafael Jaques

Esta entrada foi publicada em Data e hora e marcada com a tag , . Adicione o link permanente aos seus favoritos.

9 pessoas já comentaram! Tá esperando o quê?

  1.  

    Shows!!! Vou fazer um script pra saber qual é o dia do meu aniversário!! hehe

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
  2.  
    Xorna disse:

    Mazááá Rafa, show de bola esse teu script, afinal antes dele sempre estivemos numa batalha para desvendar um algoritmo capaz de resolver isso para nós hehehe

    Abraço

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
  3.  
    Jean disse:

    Olá.

    Tem algo bem bacana que é a funcao strtotime. Veja no manual http://br.php.net/manual/pt_BR/function.strtotime…

    Flw

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
  4.  

    Não vou comentar sobre o post mas sobre o autor. Pois, nos últimos anos vejo nosso amigo Rafael, acumulando conhecimento e experiências e a cada dia se tornanado um profissional e uma pessoa melhor.

    Jaques, este site será no decorrer do tempo um site referência na área com certeza.

    Sucesso meu garoto!!

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows Vista
  5.  
    Cintia disse:

    Oie…

    vou imitar o meu querido prof. Carlos .

    não vou comentar do post pq … sabe neh… boiei

    ahhh mas do Rafas

    sim… um pequeno grande genio …

    super sucesso pra ti…

    jah sou tua fãaa

    e o phpit jah ta nos favoritos

    Bjao

    Utilizando Internet Explorer Internet Explorer 7.0 no Windows Windows Vista
  6.  
    André disse:

    "Não saber ao certo quantos dias o mês tem" oO, tá me tirando rapá? ahsuehause

    Tri massa cara, mas ainda quero aquele texto sobre como mandar e-mails pro Gmail, via php ;)

    Ah, também sei que tu ainda quer aquele texto sobre o uso da crase ;P

    Abraço!

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
  7.  
    José disse:

    É isso aí Jaques…. já vou começar a utilizar, porque tive uma situação de calculo de dadas no sistema que estou montando…

    Realmente eu sempre olhei para o nome desta função e nunca corri atrás de estuda-lá mais a fundo, mas este seu "simples tutorial" já deu para mudar o meu conceito de formatação de datas…

    Valeu…

    Utilizando Mozilla Firefox Mozilla Firefox 2.0.0.3 no Windows Windows XP
  8.  
    Flávio disse:

    fiz um teste com o script do jeito q está ai e deu diferença no meu calculo … ai dei uma modificadinha e criei uma funçao …

    <?php

    function calculaData($dat){

    $hoje = mktime(0, 0, 0, date("d"),date("m"),date("Y"));

    // dia 05/11/2007 em Unix Time Stamp

    $somar = 60 * 60 * 24 * $dat;

    // 60 segundos * 60 minutos * 24 horas * 47 dias

    $calculo_dias = $hoje + $somar;

    return date('d/m/Y', $calculo_dias);

    }

    echo calculaData(2);

    ?>

    Utilizando Internet Explorer Internet Explorer 7.0 no Windows Windows Vista
  9.  
    diego izac disse:

    Realmente gostei muito da sua iniciativa de dividir seu conhecimento com simples mortais como eu . Vou acompanhar as suas dicas de php. Parabens pela iniciativa. Diego Izac – Mateus Leme MG

    Utilizando Mozilla Firefox Mozilla Firefox 3.5.3 no Windows Windows XP

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">