O que é o Carbon?

Carbon é uma API desenvolvida por Brian Nesbit que extende a classe nativa DateTime do PHP.

Lidar com data e hora no PHP não é a coisa mais fácil de se fazer. Nós geralmente temos que lidar com várias microfunções como strtotime, problemas de formatação, um monte de cálculos e por aí vai.

O Carbon foi desenvolvido para facilitar o manuseio de datas e horas no PHP de uma forma mais semântica e clara para o desenvolvedor. O resultado é um código mais limpo, legível e de fácil manutenção.

Vantagens

  • Lidar com timezones
  • Obter facilmente a data e hora atual
  • Converter uma instância datetime em algo legível para o usuário
  • Converter uma frase em inglês num datetime (ex: “first day of May 2016″)
  • Adicionar e subtrair data (+ 2 semanas, -6 meses)
  • Lidar com datas de forma semântica

Instalação

Opção 1 – Instalando via Composer

Na raiz do seu projeto basta digitar o comando abaixo (supondo que você tenha o composer instalado como global) :

Opção 2 – Download direto

Faça o download do arquivo Carbon.php do repositório oficial, e depois basta incluí-lo no seu arquivo .php:

 

Agora que já importamos o package, vamos aprender algumas coisas bem interessantes que podemos fazer com essa API!

Obtendo uma Data/Hora específica

Criando datas de forma simples

Além de poder definir datas/horas de forma rápida, o Carbon permite você criar datas e horas a partir de um número específico de argumentos.

Isso é muito útil quando você tem um formato de data e hora que normalmente não é reconhecido pela API. Se você passar null em qualquer um desses atributos ele vai utilizar o valor padrão do momento.

Manipulando a Data/Hora

Obtendo a data/hora não é a única coisa que você precisa fazer ao trabalhar com datas. Você geralmente precisa manipular a data ou a hora.

Por exemplo, ao criar um período de testes de um software para o usuário, você vai querer que esse período expire após uma certa quantidade de tempo. Então suponhamos que o prazo seja de 30 dias. Podemos facilmente calcular esse período com as funções add e subtract.

Para esse período de testes nós faríamos:

Temos outras variantes dos métodos add() e sub():

Getters e Setters

Uma outra forma de manipular ou ler a hora é utilizar os getters e setters disponíveis.

É possível inserir os dados da data/hora de maneira aninhada também:

Formatando

No exemplo acima, você deve ter percebido o uso do método toDateTimeString() . Esse método retorna uma string datetime “0000-00-00 00:00:00”. Existem outros tipos de formatação disponíveis:

Tempo relativo

O Carbon permite mostrar tempo relativo utilizando os métodos diff().

Por exemplo, suponhamos que temos um blog e queremos mostrar a data de publicação desta forma: publicado a 3 horas atrás. É possível fazermos isso utilizando os métodos abaixo:

Encontrando a diferença

Estes métodos servem para descobrir o número da diferença.

Mostrando a Diferença para Humanos

Estes métodos são usados para calcular a diferença e também converter o resultado para um formato fácil de qualquer ser humano entender.

Existem 4 formas diferentes de mostrar o tempo desta forma:

Ao comparar uma data do passado com a data atual:
1 hora atrás
5 meses atrás
Ao comparar uma data futura com a data atual:
1 hora a partir de agora
5 meses a partir de agora
Ao comparar uma data no passado com outra data qualquer:
1 hora antes
5 meses antes
Ao comparar uma data futura com outra data qualquer:
1 hora após
5 meses após

Use!

Existem muito mais coisas que o Carbon consegue fazer. Espero que esse artigo lhe ajude a aumentar a sua velocidade de desenvolvimento ao lidar com data e horas no PHP.

Fabio Ferreira on EmailFabio Ferreira on InstagramFabio Ferreira on Twitter
Fabio Ferreira

Desenvolvedor Javascript e PHP, é editor do blog Café na Veia e também atua como desenvolvedor web freelancer na cidade de São Paulo.


Author: Fabio Ferreira

Desenvolvedor Javascript e PHP, é editor do blog Café na Veia e também atua como desenvolvedor web freelancer na cidade de São Paulo.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Instagram did not return any images.

Siga também nosso Instagram!