Trabalhando com datas em PHP

A maioria dos sistemas utilizam datas para controlar seu funcionamento, ou ainda para cadastros, etc. A linguagem PHP não poderia ser diferente, também possui um vasto suporte à manipulação de datas, bem como os procedimentos de tempo.

[ Hits: 25.248 ]

Por: Ariel Galante Dalla Costa em 22/12/2011 | Blog: http://arielgdc.wordpress.com


Introdução



A maioria dos sistemas utilizam datas para controlar seu funcionamento, ou ainda, para cadastros, etc. A linguagem PHP não poderia ser diferente, também possui um vasto suporte à manipulação de datas, bem como os procedimentos de tempo.

A linguagem PHP se baseia no UNIX CURRENT_TIMESTAMP, que é gerado em segundos.

Mas o que é o UNIX CURRENT_TIMESTAMP?

É uma forma de controlar o tempo total de execução em segundos. A contagem iniciou-se em 1º de janeiro de 1970. Portanto, o time Unix é apenas o intervalo do número de segundos entre duas datas. Isto é muito utilizado nos sistemas atuais para acompanhamento e tratamento de informação datadas em aplicações dinâmicas e distribuídas em linha de tempo, fornecendo maior confiabilidade ao cliente.

Em 19 de janeiro de 2038 irá terminar o suporte ao timestamp em processadores 32-bit, devido a um estouro no cálculo. Antes disso, milhares de aplicações irão necessitar adotar um novo sistema, ou ser migrados para sistemas de 64bits, que suportarão maior timestamp.

Mas enquanto isso, vamos utilizando. E quando for necessário, passaremos nossas máquinas para 64bits.

Para os cálculos, bem como a diferenças, são utilizadas as medidas em segundos. Antes de tudo vamos a uma breve revisão:
  • SEGUNDO: 1000 milésimos;
  • MINUTO: 60 segundos;
  • HORA: 60 minutos;
  • DIA: 24 horas;
  • MÊS: 30 dias;
  • ANO: 365 dias(não bissexto);
  • DÉCADA: 10 anos;
  • SÉCULO: 100 anos;
  • MILÊNIO: 1000 anos.

Agora, se quisermos efetuar cálculos com datas, devemos ter em mente que:
  • SEGUNDO: 1000 milésimos.
  • MINUTO: 60 segundos.
  • HORA: 60 segundos * 60 minutos.
  • DIA: 60 segundos * 60 minutos * 24 horas.
  • MÊS: 60 segundos * 60 minutos * 24 horas * 30 dias.
  • ANO: 60 segundos * 60 minutos * 24 horas * 365 dias OU 60 segundos * 60 minutos * 24 horas * ((30 * 12) + 5).
  • DÉCADA: 60 segundos * 60 minutos * 24 horas * 365 dias OU 60 segundos * 60 minutos * 24 horas * ((30 * 12) + 5) * 10.
  • SÉCULO: 60 segundos * 60 minutos * 24 horas * 365 dias OU 60 segundos * 60 minutos * 24 horas * ((30 * 12) + 5) * 10 * 10.
  • MILÊNIO: 60 segundos * 60 minutos * 24 horas * 365 dias OU 60 segundos * 60 minutos * 24 horas * ((30 * 12) + 5) * 10 * 10 * 10.

Para sabermos a data atual do servidor PHP, temos duas maneiras: a função date() e a função time().

A função date("STRING", $timestamp) permite expressar um calendário de várias maneiras.

Os parâmetros para STRING mais básicos são:
  • d : Dia do mês (2 dígitos);
  • D : Dia do mês abreviado em três letras: de Mon até Sun;
  • m : Dia do mês (numero de 2 dígitos);
  • M : Mês abreviado com três letras (três letras: Jan a Dec);
  • y : Ano com 2 dígitos;
  • Y : Ano com 4 dígitos;
  • l : Dia da semana por extenso (Sunday até Saturday);
  • h : Hora em formato de 12 horas;
  • H : Hora em formato de 24 horas;
  • i : Minutos em formato de 2 dígitos;
  • s : Segundos em formato de 2 dígitos;
  • A : AM ou PM.

Exemplo:

<?php echo date("Y"); //IRÁ IMPRIMIR O ANO NO FORMATO 20+ANO echo date("d"); //IRÁ IMPRIMIR O DIA (30 DIAS) echo date("m"); //IRÁ IMPRIMIR O MÊS NO FORMATO NUMÉRICO 1-12 echo date("d/m/Y"); //IRÁ IMPRIMIR dia/mês/ano, ex: 20/12/2011 ?>


    Próxima página

Páginas do artigo
   1. Introdução
   2. Calculando a diferença de datas
   3. Time zone e Conclusão
Outros artigos deste autor

Lógica para Computação - Parte V

Lógica para computação - parte III

Lógica para computação - parte IV

Lógica para computação - parte II

Computação em nuvem, uma visão panorâmica

Leitura recomendada

Criando Virtual Host no Apache: simples assim

Tags automáticas em URLs com a classe urlmatch da PHP

Criando gráficos com a classe JPGraph (parte 2)

Inteligência Artificial com PHP e MySQL (parte I)

Turck MMcache completo e sem mistérios

  
Comentários
[1] Comentário enviado por arieldll em 22/12/2011 - 11:44h

Ha um erro que acabou passando despercebido em um exemplo:
Para calcular a insercao de 22 dias, precisa-se multiplicar tambem por 24, pois sao 22 dias * 24 horas * 60 minutos * 60 segundos.

Aqui esta o codigo certo:
<?php
$Data_Atual=time(); //BUSCA A DATA ATUAL
$Acrescimo=22*24*60*60; //CALCULA O ACRÉSCIMO, DE 22 DIAS
$Data_Gerada=$Data_Atual+$Acrescimo; // SOMA A DATA ATUAL AOS 22 DIAS
echo "A data gerada foi: ".date("d/m/Y", $Data_Gerada); //TRANSFORMA PARA O FORMATO dia/mês/ano
?>

[2] Comentário enviado por rai3mb em 22/12/2011 - 16:10h

Corrigido.

[3] Comentário enviado por ederrb em 26/12/2011 - 14:12h

Bem, o mais adequado para calcular datas não é o apresentado neste artigo. Leiam o manual http://br.php.net/strtotime

Exemplo, para somar 22 dias a data atual, bastaria vc fazer algo como:

echo date('d/m/Y',strtotime('+22 days'));

Muito mais fácil, não?

Abraço!

[4] Comentário enviado por arieldll em 26/12/2011 - 15:14h

ederrb, obrigado por sua observacao e por compartilhar esta funcao conosco.
Fica a criterio do programador definir qual prefere. Eu acredito que desta forma fique muito mais organizado, mas sua dica esta mais do que valendo.
Valeu amigao

[]'s Ariel.

[5] Comentário enviado por DonatoBarros em 06/03/2013 - 16:00h

Parabéns pelo artigo. Muito bom...

http://donatobarros.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts