Como formatar horas no PHP?

O formato para horas em PHP é representado pelos caracteres H:i:s. Onde:

  • H retorna a hora de 0 a 23
  • i retorna o minuto
  • S retorna o segundo

Exibindo a hora atual formatada pelo PHP

Para exibir a hora atual em PHP, basta utilizamos a função date ou o método DateTime::format.

Exemplo:

date('H:i:s')

ou

$date = new Datetime();
echo $date->format('H:i:s');

// ou echo (new Datetime)->format('H:i:s');

{% include ads_article.html %}


Formatando hora de uma determinada data

Para formatar a horas específica de uma determinada data, você pode realizar a mesma operação anterior.

No nosso exemplo, vamos supor que temos a data 2017-02-31 23:10:58.

Utilizando a classe DateTime, ficaria dessa forma.


$entrada = '2017-02-31 23:10:58';

(new DateTime($entrada))->format('H:i:s'); // 23:10:58

Já no caso da função date, você precisa utilizar também o strtotime, para que o PHP converta a data para um unix timestamp;

Veja:


$entrada = '2017-02-31 23:10:58';
echo date('H:i:s', strtotime($entrada)); // 23:10:58

Exibindo horas com AM e PM

Para exibir datas contendo a identificação AM (ante meridiem) e PM (post meridiem), você deve utilizar o formato h:i:s A ou h:i:s a.

Explicando melhor os caracteres acima significam:

  • h a hora de 0 a 12
  • a retorna se a hora é AM ou PM (em minúsculo)
  • A retorna se a hora é AM ou PM (em maiúsculo)

Exemplos:

echo date('h:i:s A'); // 10:02:55 AM
echo date('h:i:s a'); // 10:02:55 am
echo (new DateTime)->format('h:i:s A');

Dica: padronize o formato utilizado

Pode ser que você precise utilizar o mesmo formato em vários lugares no seu projeto. Neste caso, para fins de manutenção de padrões e evitar repetições desnecessárias, sugiro a utilização de uma constante para armazenar o valor de formatação das horas.

define('TIME_FORMAT', 'h:i:s A');
echo date(TIME_FORMAT); // 03:18:41 PM