Manipulando datas com PHP

Manipulando datas com PHP

Neste artigo vamos ver diferentes formas de trabalhar com datas no PHP.

Vamos começar vendo como retornar a data atual com PHP

Utilizando a função date(), podemos formatar a data atual de várias formas:

echo date("d/m/Y"); // Retorna a data atual no formado dia/mes/ano

echo date("H:i:s"); // Retorna o horário atual no formato hora:minuto:segundos

echo date("d/m/Y H:i:s") //Retorna a data e hora atual

Outra função que trabalha com data e hora é a função time(), ela retorna um valor numérico de 11 algarismos chamado UNIX TIMESTAMP, que representa o número de segundos que se passaram desde 1970.

echo time(); // Retorna o timestamp atual

Para retornar o timestamp de uma data, você pode utilizar a função mktime(). Ela recebe os seguintes parâmetros: hora, minuto, segundo, mes, dia e ano. 

echo mktime(15, 09, 10, 08, 15, 2020);

Com base em um determinado timestamp, podemos separar as suas informações e guardar num array associativo usando a função getdate()

$data = '2020-08-15 15:09:10';

$timestamp = strtotime($data);

print_r(getdate($timestamp));

Para pegar uma data gravado no MySQL (Ano-Mês-Dia) e converter para o formato de data que utilizamos, que é dia/mes/ano, podemos usar a função strtotime() para converter a data do MySQL em um timestamp, e depois usar a função date() para formatar o resultado da forma que desejamos.

$data_mysql = '2020-08-15 15:09:10';

$timestamp = strtotime($data_mysql); 

echo date('d/m/Y', $timestamp);

Perceba que nos exemplos anteriores da função date() foi utilizado apenas um parâmetro, que aplicava a formatação do resultado na data/hora atual. Quando a função date() recebe um timestamp como segundo parâmetro, a formatação informada no primeiro parâmetro é aplicada para o timestamp informado.

A função strtotime() também pode ser utilizada para adicionar ou substrair um período de tempo de uma data informada. Exemplos:

$data = "2020-08-15";

$timestamp1 = strtotime($date);

$timestamp2 = strtotime('+10 day', $timestamp1);

Para transformar a data num array associativo, separando cada uma de suas informações podemos usar a função date_parse().

$minha_data = '2020-08-15 15:04:00';

$resultado = date_parse($minha_data);

print_r($resultado);

E para validar se uma data é válida, podemos usar a função checkdate (mes,dia,ano)

print_r(checkdate(08, 15, 2020));

Agora vamos ver como calcular a diferença entre duas datas. Para nos ajudar, o PHP possui uma classe chamada DateTime, disponível deste a versão 5.2 do PHP, que nos permite fazer estas comparações:

$data_inicial = new DateTime('2020-01-01 00:00:00');

$data_final = new DateTime('2020-08-15 15:14:00');

$intervalo = $data_final->diff($data_inicial);

print_r($intervalo);

O resultado é um objeto com vários tipos de resultados, você pode obter a diferença entre estas duas datas por dias, horas, meses ou semanas. Para ver a diferença de dias entre duas datas, bastaria fazer isso:

$data_inicial = new DateTime('2020-01-01 00:00:00');

$data_final = new DateTime('2020-08-15 15:14:00');

$intervalo = $data_final->diff($data_inicial);

echo $intervalo->d;

A classe DateTime pode substituir vários dos exemplos que vimos no começo deste artigo. Vamos ver alguns exemplos a seguir.

Para formatar uma data, utilizamos o método format.

$data = '2020-08-15';

$date = new DateTime($data);

echo $date->format('Y-m-d');

Para adicionar uma quantidade de dias a uma data, podemos fazer da seguinte forma:

$data = '2020-08-15';

$date = new DateTime($data);

$date->add(new DateInterval('P10D'));

echo $date->format('Y-m-d');

No exemplo acima adicionamos 10 dias a data informada.

 

Outros conteudos que podem ser de seu interesse

Removendo acentos e caracteres especiais com PHP
07/06/2020PHP

Removendo acentos e caracteres especiais com PHP

Veja como remover acentos e caracteres especiais com PHP

Saiba mais...
Como conseguir emprego na área de tecnologia da informação
25/04/2021PHP

Como conseguir emprego na área de tecnologia da informação

Tudo o que você precisa saber para ir atrás de seu primeiro emprego

Saiba mais...

Conteúdo sobre banco de dados sem complicação!