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.234 ]

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

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

Lógica para computação - parte II

MySQL, Apache2, PHP5, phpMyAdmin e o driver de conexão com o NetBeans no OpenSUSE 11.2

Lógica para Computação - Parte V

Ética na Programação

Leitura recomendada

Formantando nomes com caracteres especiais em PHP

Utilizando PHP para validar dados passados pelo usuário

Compactador de URL utilizando manipulação de diretórios do Linux com PHP

Instalando Lamp Stack no Servidor Debian

Paginação de resultados em PHP/MySQL

  
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