Trabalho com datas em PHP: bibliotecas e ferramentas
Trabalhar com datas e horas é uma das tarefas mais comuns no desenvolvimento web. O PHP possui a classe nativa DateTime, mas sua funcionalidade muitas vezes não é suficiente para operações complexas: cálculo de diferenças de tempo, formatação considerando localidade, trabalho com fusos horários. É aí que entram as bibliotecas especializadas. Neste artigo, vamos analisar as melhores ferramentas para trabalhar com datas em PHP.
1. Classe nativa DateTime
Antes de passar para bibliotecas de terceiros, vale lembrar da solução nativa — a classe DateTime. Ela está disponível no PHP desde a versão 5.2 e oferece funcionalidades básicas:
- Criação de objetos de data e hora
- Formatação (através de
format()) - Modificação de data (através de
modify()) - Trabalho com fusos horários (
DateTimeZone) - Comparação de datas
Exemplo de uso:
<?php$date = new DateTime('2024-12-31');$date->modify('+1 day');echo $date->format('Y-m-d'); // 2025-01-01?>No entanto, o DateTime tem desvantagens: falta de métodos convenientes para trabalhar com intervalos, dificuldades com encadeamento de chamadas e suporte limitado a formatos legíveis por humanos.
2. Carbon — a biblioteca mais popular
Carbon é uma extensão para o DateTime que adiciona uma API conveniente, encadeamento de métodos e várias funções auxiliares. Instalação via Composer:
composer require nesbot/carbonPrincipais recursos do Carbon:
- Métodos legíveis:
now(),yesterday(),tomorrow() - Localização (suporte ao português)
- Trabalho com intervalos:
diffForHumans() - Modificação de data via encadeamento:
->addDays(5)->subMonths(2) - Comparação:
isWeekend(),isPast(),isFuture()
Exemplo com localização em português:
<?phprequire 'vendor/autoload.php';use Carbon\\Carbon;
Carbon::setLocale('pt_BR');$date = Carbon::now();echo $date->diffForHumans(); // "agora mesmo" ou "3 horas atrás"?>Carbon é o padrão de facto para trabalhar com datas no Laravel e em muitos outros projetos.
3. Chronos — uma alternativa leve
Chronos do CakePHP é outra extensão do DateTime, mas com foco em leveza e desempenho. Instalação:
composer require cakephp/chronosDiferenças do Carbon:
- Sem dependências (exceto PHP)
- Tipagem mais rigorosa
- Suporte a objetos imutáveis (immutable) por padrão
- Menos métodos, mas os principais estão presentes
Exemplo:
<?phpuse Cake\\Chronos\\Chronos;
$date = Chronos::now();$future = $date->addDays(10);echo $future->format('d.m.Y');?>Chronos é bom para projetos onde a pureza do código e o desempenho são importantes, mas não é necessário um ecossistema extenso.
4. CarbonImmutable e DateTimeImmutable
A partir do PHP 5.5, surgiu a classe DateTimeImmutable, que não modifica o objeto original, mas retorna um novo. No Carbon, existe o análogo — CarbonImmutable. Isso evita mutações acidentais dos dados:
<?phpuse Carbon\\CarbonImmutable;
$date = CarbonImmutable::now();$newDate = $date->addDay();echo $date->format('Y-m-d'); // O original não foi alterado?>Use versões imutáveis se as datas forem passadas entre funções ou armazenadas em cache.
5. League\\Period — trabalho com períodos
A biblioteca Period da The League of Extraordinary Packages é destinada ao trabalho com intervalos de tempo e per
Também na biblioteca
Geração de PDF em PHP: bibliotecas, ferramentas e exemplos de código
GraphQL em Go: Guia Completo de Bibliotecas e Ferramentas
Validator para Go: guia completo com exemplos práticos
Paging 3 para Kotlin: guia completo com exemplos práticos
Trabalhando com Kafka em TypeScript: biblioteca KafkaJS e exemplos