PHP
Como formatar datas com PHP
Uma questão que às vezes tira o sono de muitos desenvolvedores PHP, é a formatação de data e hora. Já vi muitos códigos por aí em pleno PHP 5.6 que convertem e formatam data usando códigos de string e outros códigos mirabolantes.
No PHP existem muitas funções nativas que fazem diversas operações com datas, mas a partir do PHP 5.2 foi criado a classe DateTime que faz o trabalho duro com as datas e horários. Infelizmente, muitos desenvolvedores não a conhecem, deixando de usar um código altamente estruturado. O profissional PHP hoje tem que pelo menos conhecer o DateTime, porque, existem métodos procedurais para trabalhar com data e o DateTime é orientado a objetos.
Qual é a ideia?
Usar o DateTime para realizar algumas operações com datas.
O que faremos?
- Brincar com o DateTime
- Considerações finais.
Passos
- Brincar com a DateTime.
Para iniciar um DateTime simplesmente:
$date = new \DateTime();//isto criará um datetime com a data e hora atual.
Para iniciar um DateTime de qualquer outro formato:
$date = \DateTime::createFromFormat('d/m/Y', '01/01/2015');//isto criará um datetime a partir do formato de data usado no Brasil. Primeiro parâmetro é o format, segunda a data.
Para adicionar tempo em uma data:
$date->add(new \DateInterval('P30D'));//Adicionando 30 dias a data inicial
A classe DateInterval é um complemento para administrar intervalos e formatos para DateTime. Para inicia-lo é necessário ter um P (de período) e depois o intervalo em anos, meses, dias, segundos, etc.
Para subtrair tempo em uma data:
$date->sub(new \DateInterval('P30D'));//Subtraindo 30 dias a data inicial
Diferença entre duas datas:
$datetime1 = new \DateTime('2015-10-11'); $datetime2 = new \DateTime('2015-10-13'); $interval = $datetime1->diff($datetime2); echo $interval->days;
Veja que com três linhas mostramos a diferença entre duas data. Depois é só usar a variável days para pegar a diferença em dias.
Para mostrar um DateTime:
echo $date->format(\DateTime::ATOM);//mostrará um datetime no formato ATOM (MySQL)
echo $date->format('d/m/Y');//mostrará um datetime no formato usado no Brasil 00/00/0000
Veja aqui os formatos de data e hora.
Com DateTime podemos fazer comparações diretas para verificar igualdades, se uma data é menor que outra.
var_dump($date1 == $date2); var_dump($date1 < $date2); var_dump($date1 > $date2);
- Considerações finais
É isso aí pessoal, espero que brinquem bastante com o DateTime, vejam a importância e a facilidade de se trabalhar orientado a objetos, e, passem a usar menos o modo procedural para trabalhar com data e horários.
Referências:
http://php.net/manual/en/class.datetime.php
http://php.net/manual/en/class.dateinterval.php
http://sixrevisions.com/web-development/php-dateinterval-class/