Manipulando datas facilmente

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

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

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

  • 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

  • Olá.

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

    Flw

  • 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!!

  • Cintia

    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

  • "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!

  • José

    É 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…

  • 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);

    ?>

  • 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

  • Show de bola amigão muito bem explicado