PHP Snippets

Fragmentos de timestamp Unix en PHP

Ejemplos de PHP para obtener segundos Unix, generar milisegundos, formatear timestamps, convertir entre objetos DateTime y parsear cadenas de fecha.

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")

Conceptos básicos de marcas de tiempo en PHP

El time() de PHP devuelve segundos Unix enteros. Usa microtime(true) cuando necesites precisión por debajo del segundo o quieras derivar milisegundos Unix para API orientadas a JavaScript.

Formatear fechas en PHP

date() formatea marcas de tiempo en la zona horaria predeterminada del servidor, mientras que gmdate() formatea en UTC. Para trabajo explícito con zonas horarias, usa DateTime con DateTimeZone para que los despliegues se comporten de forma consistente.

Notas de producción para PHP

Las aplicaciones PHP suelen ejecutarse en hosting compartido, contenedores o workers con zonas horarias predeterminadas distintas. Trata el valor predeterminado del servidor como un detalle de implementación. Almacena segundos Unix o valores DateTime UTC en los datos persistentes, y luego elige una DateTimeZone en el punto donde se formatea la marca de tiempo para un usuario, informe o integración.

  • Usa time() para segundos Unix enteros en controladores, trabajos y scripts simples
  • Usa microtime(true) cuando necesites fracciones de segundo o precisión de milisegundos
  • Usa gmdate() para un formateo UTC estable que ignore la zona horaria del servidor
  • Usa DateTimeImmutable para código que no deba mutar una fecha por accidente

FAQ

¿time() incluye milisegundos?
No. time() devuelve segundos Unix enteros. Usa microtime(true) si necesitas fracciones de segundo o si necesitas calcular una marca de tiempo en milisegundos.
¿Por qué usar gmdate() en lugar de date()?
gmdate() formatea la marca de tiempo en UTC. date() usa la zona horaria configurada del servidor, que puede cambiar entre el desarrollo local, los contenedores y el alojamiento de producción.
¿Cómo compruebo una conversión en PHP?
Convierte el mismo valor con gmdate('c', $timestamp), luego compáralo con un conversor de epoch independiente o una función UTC de base de datos antes de usarlo en una migración.