Estudar pela apostila de PHP
Obter meu certificado! |
Criando objetos da classe DateTime
A classe DataTime provém uma série de métodos, atributos e possibilidades que nos permitem trabalhar de maneira muito mais fácil com datas e tempo, usando orientação a objetos.Vamos criar um objeto desta classe:
$date = new DateTime();
Se dermos um print_c($date);, veremos que no resultado é o atual, do momento da criação do objeto:
DateTime Object (
[date] => 2019-02-28 11:06:53.684238
[timezone_type] => 3
[timezone] => America/Sao_Paulo )
É um objeto do momento atual, no momento que estou programando este tutorial.
Construtor da classe DateTime
Podemos, porém, já inicializar com uma data, no formato: ano-mes-dia, para criar um objeto com uma data específica.Vamos escolher uma data aleatória:
$date = new DateTime("2020-02-28");
O resultado da print_r($date); é:
DateTime Object (
[date] => 2019-02-28 00:00:00.000000
[timezone_type] => 3
[timezone] => America/Sao_Paulo )
Formatando datas e horas: Método format()
A classe DateTime possui o método format() que usa os mesmos parâmetros da função date(), assim podemo exibir o formato de data e hora do jeito que quisermos.Por exemplo, para exibirmos no formato brasileiro de: dd/mm/YYYY Hora:minuto:segundo, basta fazer:
$date = new DateTime();
echo $date->format( "d/m/Y H:i:s" );
Somando e Subtraindo datas
Que tal saber qual foi a data de 35 dias atrás?Basta fazer:
$date = new DateTime('-35 days');
echo $date->format( "d/m/Y H:i:s" );
E qual data vai ser daqui 2 semanas e 10 dias?
$date = new DateTime('+2 weeks 10 days');
echo $date->format( "d/m/Y H:i:s" );
Diferença entre datas: Método diff()
Imagina calcular, de maneira instantânea a diferença de anos, meses, dias, horas, minutos e até segundos daqui até uma outra data?Vamos pegar a data atual:
$hoje = new DateTime();
Agora uma futura qualquer:
$futuro = new DateTime('2020-02-27');
O array $diff vai armazenar a diferença entre $futuro e $hoje, assim:
$diff = $hoje->diff($futuro);
Para exibir o resultado, faça:
<?php $hoje = new DateTime(); $futuro = new DateTime('2020-02-27'); $diff = $hoje->diff($futuro); echo "Diferença de: <br/>" .$diff->days . " dias <br/>" .$diff->m . " meses <br/>" .$diff->y . " anos <br/>" .$diff->h . " horas <br/>" .$diff->i . " minutos <br/>" .$diff->s . " segundos<br/>"; ?>O resultado aqui foi:
Diferença de:
363 dias
11 meses
0 anos
12 horas
28 minutos
28 segundos
Bem preciso esse PHP, não ?
Modificando Data e Hora: setDate() e setTime()
Após criar e definir seu objeto do tipo DateTime, é totalmente possível mudar seus atributos, como ano, dia, hora ou o que for, através dos setters.Vamos definir a data atual e exibir ela:
$data = new DateTime();
echo $data->format( "d/m/Y H:i" )."<br />";
O resultado é: 28/02/2019 11:37 (sim, tá quase na hora do almoço)
Agora vamos mudar a data pra 01/03/2019, amanhã e o horário para 12:00.
Nosso código fica assim:
$data->setDate(2019,03,01);
$data->setTime(12,0,0);
echo $data->format( "d/m/Y H:i" )."<br />";
E o resultado assim: 01/03/2019 12:00
Bonitinho, não?
Comparando Datas: var_dump
Muitas vezes é preciso saber se uma data é igual a outra, se é anterior, posterior...Vamos criar uma variável que representa hoje e outra amanhã:
$hoje = new DateTime();
$amanha = new DateTime('2019-03-01');
Vamos comparar se elas são iguais:
var_dump($hoje == $amanha);
O resultado vai ser: bool(false)
Agora vamos comparar se amanhã é maior que hoje:
var_dump($amanha > $hoje);
O resultado vai ser: bool(true)
Que bom que deu verdade, né?
É possível ainda trabalhar com fuso-horário, somar intervalos de tempo, subtrair, definir língua e local que vai usar e uma porção de outros métodos para você usar, para aprender mais, acesse a documentação oficial do PHP:
http://php.net/manual/pt_BR/class.datetime.php