Trabalho com datas e horas em PHP: funções, classes e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com Datas e Horas em PHP: do Básico ao Avançado



Trabalhar com datas e horas é uma das tarefas mais comuns no desenvolvimento web. Seja para exibir a data atual, calcular a diferença entre eventos ou salvar timestamps no banco de dados, o PHP oferece um conjunto de ferramentas poderoso e flexível. Neste artigo, vamos detalhar as principais funções, classes e melhores práticas para trabalhar com datas e horas em PHP.



O material será útil tanto para iniciantes que estão começando a estudar PHP quanto para desenvolvedores experientes que desejam sistematizar seus conhecimentos.



1. Funções Básicas: date(), time() e mktime()



Vamos começar pelo fundamento. O PHP oferece várias funções embutidas para trabalhar com datas. As mais populares são date(), time() e mktime().



Função time()

A função time() retorna o timestamp Unix atual — o número de segundos desde 1º de janeiro de 1970 00:00:00 UTC. Este é o valor base para muitas operações.



echo time(); // Exibirá algo como 1698765432


Função date()

A função date() formata a data e hora local. O primeiro parâmetro é uma string de formato, o segundo (opcional) é um timestamp. Se o segundo parâmetro não for informado, usa-se a hora atual.



// Formatos básicosecho date("Y-m-d");          // 2023-10-31echo date("H:i:s");          // 14:30:00echo date("d.m.Y H:i");      // 31.10.2023 14:30echo date("l, j F Y");       // Tuesday, 31 October 2023

// Timestamp personalizado$timestamp = mktime(12, 0, 0, 1, 1, 2024);echo date("Y-m-d H:i:s", $timestamp); // 2024-01-01 12:00:00


Símbolos de formatação populares:

  • d — dia do mês (01-31)
  • m — mês (01-12)
  • Y — ano no formato de 4 dígitos
  • H — horas (00-23)
  • i — minutos (00-59)
  • s — segundos (00-59)


Função mktime()

mktime() cria um timestamp com base nos parâmetros fornecidos (horas, minutos, segundos, mês, dia, ano). Isso é útil para obter o timestamp de uma data específica.



// Criando um timestamp para 25 de dezembro de 2023, 10:30:00$christmas = mktime(10, 30, 0, 12, 25, 2023);echo date("d.m.Y H:i:s", $christmas); // 25.12.2023 10:30:00


2. Abordagem Orientada a Objetos: Classe DateTime



Embora as funções date() e time() sejam simples, elas têm limitações. Para operações mais complexas (comparação de datas, trabalho com fusos horários, adição/subtração de intervalos), é melhor usar a classe DateTime.



Criando objetos DateTime

// Hora atual$now = new DateTime();echo $now->format("Y-m-d H:i:s"); // 2023-10-31 14:30:00

// Data específica$date = new DateTime("2024-03-15 08:00:00");echo $date->format("d.m.Y"); // 15.03.2024

// Formatos relativos$nextWeek = new DateTime("+1 week");echo $nextWeek->format("Y-m-d");

$lastMonth = new DateTime("first day of last month");echo $lastMonth->format("Y-m-d");


Trabalhando com Fusos Horários

Uma das principais vantagens do DateTime é o suporte a fusos horários.



// Especificando o fuso horário na criação$moscow = new DateTime("now", new DateTimeZone("Europe/Moscow"));echo $moscow->format("Y-m-d H:i:s"); // Horário de Moscou

// Alterando o fuso horário$newYork = new DateTime("now", new DateTimeZone("America/New_York"));echo $newYork->format("Y-m-d H:i:s"); // Horário de Nova York

// Lista de fusos disponíveis: https://www.php.net/manual/ru/timezones.php


Comparação de Datas

$date1 = new DateTime("2024-01-01");$date2 = new DateTime("2024-12-31");

if ($date1 < $date2) { echo "A primeira data é anterior à segunda";}

// Dif

Blogs

Book Recommendations