PHPit - PHP

"Agora, pois, permanecem a fé, a esperança, o amor, estes três; mas o maior destes é o amor." (I Coríntios 13:13)

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().

Código: Alternar entre o modo de cópia/destaque
  1. <?php
  2.  
  3. $hoje = mktime(0, 0, 0, 11, 5, 2007); // dia 05/11/2007 em Unix Time Stamp
  4. $somar = 60 * 60 * 24 * 47; // 60 segundos * 60 minutos * 24 horas * 47 dias
  5.  
  6. $daqui47dias = $hoje + $somar;
  7.  
  8. echo date('d/m/Y', $daqui47dias);
  9.  
  10. ?>
<?php

    $hoje 
mktime(0001152007); // 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

Dim dim

 

Comentaí! (09)

Shows!!! Vou fazer um script pra saber qual é o dia do meu aniversário!! hehe Anderson (Kuen) em 07/11/2007 às 07:20 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
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 Xorna em 07/11/2007 às 08:17 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
Olá.

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

Flw Jean em 07/11/2007 às 23:25 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
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!! Carlos Tristacci em 09/11/2007 às 10:38 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows Vista
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 Cintia em 09/11/2007 às 23:16 utilizando o Internet Explorer Internet Explorer 7.0 no Windows Windows Vista
"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! André em 10/11/2007 às 09:27 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.9 no Windows Windows XP
É 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... José em 06/12/2007 às 12:06 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.3 no Windows Windows XP
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);
?> Flávio em 01/01/2009 às 22:41 utilizando o Internet Explorer Internet Explorer 7.0 no Windows Windows Vista
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 diego izac em 29/09/2009 às 08:33 utilizando o Mozilla Firefox Mozilla Firefox 3.5.3 no Windows Windows XP
 

Comenta logo, pô!

* Todos os links inseridos nos comentários possuem rel="nofollow" para impedir com que crawlers considerem os mesmos como relevantes.
* Os e-mails não são divulgados.

Dados pessoais

Você é realmente um humano?

Finalmente, digite seu comentário :)

Caixinha de Sugestões

O que é isso? Aqui você pode simplesmente digitar uma sugestão (artigos, resenhas, melhorias, etc) sem precisar preencher longos formulários. Digite o que quiser na caixinha abaixo e eu lerei com o maior prazer! Se quiser se identificar, fique a vontade!

O PHPit é redigido e mantido por Rafael Jaques - Política de Privacidade.

XHTML/CSS desenvolvido por André Gazola.

PHPit 2007 - 2009 - Alguns direitos reservados.

Feeds ;)

Creative Commons License

PHPit por Rafael Jaques é licensiado sob a Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.