PHP Snippets

Trechos de timestamp Unix em PHP

Exemplos de PHP para obter segundos Unix, gerar milissegundos, formatar timestamps, converter entre objetos DateTime e parsear strings de data.

Current Unix timestamp (seconds)
time()
Current Unix timestamp (milliseconds)
round(microtime(true) * 1000)
Formatted date from timestamp
date("Y-m-d H:i:s", 1700000000)
Date in specific timezone
date_default_timezone_set("America/New_York");
date("Y-m-d H:i:s", 1700000000);

// Or with DateTime:
$dt = new DateTime();
$dt->setTimestamp(1700000000);
$dt->setTimezone(new DateTimeZone("America/New_York"));
echo $dt->format("Y-m-d H:i:s");
Timestamp from date string
strtotime("2023-11-15 06:13:20 UTC")

Noções básicas de marcas de tempo em PHP

O time() do PHP retorna segundos Unix inteiros. Use microtime(true) quando precisar de precisão abaixo do segundo ou quiser derivar milissegundos Unix para APIs voltadas a JavaScript.

Formatando datas em PHP

date() formata marcas de tempo no fuso padrão do servidor, enquanto gmdate() formata em UTC. Para trabalho explícito com fusos, use DateTime com DateTimeZone para que as implantações se comportem de forma consistente.

Notas de produção para PHP

Aplicações PHP costumam rodar em hospedagem compartilhada, contêineres ou workers com fusos padrão diferentes. Trate o padrão do servidor como um detalhe de implementação. Armazene segundos Unix ou valores DateTime UTC nos dados persistentes e depois escolha um DateTimeZone no ponto em que a marca de tempo é formatada para um usuário, relatório ou integração.

  • Use time() para segundos Unix inteiros em controladores, jobs e scripts simples
  • Use microtime(true) quando precisar de frações de segundo ou precisão de milissegundos
  • Use gmdate() para uma formatação UTC estável que ignora o fuso do servidor
  • Use DateTimeImmutable para código que não deve alterar uma data por acidente

FAQ

time() inclui milissegundos?
Não. time() retorna segundos Unix inteiros. Use microtime(true) se precisar de frações de segundo ou se precisar calcular uma marca de tempo em milissegundos.
Por que usar gmdate() em vez de date()?
gmdate() formata a marca de tempo em UTC. date() usa o fuso configurado do servidor, que pode mudar entre o desenvolvimento local, contêineres e hospedagem de produção.
Como verifico uma conversão em PHP?
Converta o mesmo valor com gmdate('c', $timestamp), depois compare-o com um conversor de epoch independente ou uma função UTC de banco de dados antes de usá-lo em uma migração.