Convierta la marca de tiempo a fecha / hora legible PHP

227

Tengo una marca de tiempo almacenada en una sesión (1299446702).

¿Cómo puedo convertir eso a una fecha / hora legible en PHP? He intentado srttotime, etc. en vano.

Adamski
fuente

Respuestas:

396

Utiliza la date()función de PHP .

Ejemplo:

echo date('m/d/Y', 1299446702);
Cohete Hazmat
fuente
1
Puede ir a epochconvert.com/programming/php para ver la época o la marca de tiempo de la fecha legible por humanos utilizando PHP.
Laeeq
84

strtotime convierte una cadena de fecha en una marca de tiempo. Desea hacer lo contrario, que es la fecha . El formato de fecha mysql típico es date('Y-m-d H:i:s'); Consulte la página del manual para ver qué otras letras representan.

Si tiene una marca de tiempo que desea usar (aparentemente lo hace), es el segundo argumento de date().

Píldoras de explosión
fuente
44
sería una buena nota que pasé en mi fecha actual de la siguiente manera:echo date('m/d/Y', strtotime($current_date_variable);
cwiggo
¿No hay un comando para convertir una marca de tiempo a su estandarización de fecha y hora porque convertí una fecha y hora en una marca de tiempo de Unix pero en mi base de datos todavía es una fecha y hora? Intentaré esto, pero aún me parece extraño que no haya un comando específico para ello
Marc Roelse
64

Acabo de agregar H: i: s a la respuesta de Rocket para obtener el tiempo junto con la fecha.

echo date('m/d/Y H:i:s', 1299446702);

Salida: 06/03/2011 16:25:02

Razan Paul
fuente
49
$timestamp = 1465298940;
$datetimeFormat = 'Y-m-d H:i:s';

$date = new \DateTime();
// If you must have use time zones
// $date = new \DateTime('now', new \DateTimeZone('Europe/Helsinki'));
$date->setTimestamp($timestamp);
echo $date->format($datetimeFormat);

resultado: 2016-06-07 14:29:00

Otras zonas horarias:

Stanislav Malomuzh
fuente
23

Si está usando PHP date(), puede usar este código para obtener la fecha, hora, segundo, etc.

$time = time();               // you have 1299446702 in time
$year = $time/31556926 % 12;  // to get year
$week = $time / 604800 % 52;  // to get weeks
$hour = $time / 3600 % 24;    // to get hours
$minute = $time / 60 % 60;    // to get minutes
$second = $time % 60;         // to get seconds
Rahul Dadhich
fuente
12
¿Qué tal año bisiesto y segundo ...?
Petteri Hietavirta
$year = date('Y', $time)
Ruben Kazumov
16

Sé que es una vieja pregunta, pero es alta en los resultados de búsqueda.

Si alguien quiere la conversión de marca de tiempo directamente a un objeto DateTime, hay una simple línea:

$timestamp = 1299446702;
$date = DateTime::createFromFormat('U', $timestamp);

Después del comentario de @sromero, el parámetro de zona horaria (el tercer parámetro en DateTime :: createFromFormat ()) se ignora cuando se pasa la marca de tiempo de Unix, por lo que el código siguiente no es necesario.

$date = DateTime::createFromFormat('U', $timestamp, new DateTimeZone('UTC'); // not needed, 3rd parameter is ignored

Puede consultar el manual de PHP para DateTime :: createFromFormat para obtener más información y opciones.

Pascal
fuente
1
Haga un comentario sobre su última línea de código: de acuerdo con la página del manual que enlace: "Nota: El parámetro de zona horaria y la zona horaria actual se ignoran cuando el parámetro de hora contiene una marca de tiempo UNIX (por ejemplo, 946684800) o especifica una zona horaria (por ejemplo, 2010 -01-28T15: 00: 00 + 02: 00) ".
sromero el
@sromero Tienes derecho. El parámetro de zona horaria se ignora en este caso.
Pascal
14

Intentalo.

<?php
 $timestamp=1333342365;
 echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
 ?>
Neil Dhakal
fuente
8

Puedes probar esto:

   $mytimestamp = 1465298940;

   echo gmdate("m-d-Y", $mytimestamp);

Salida:

06-07-2016

Pratik Mehta
fuente
8

A menos que necesite un formato de fecha y hora personalizado, es más fácil, menos propenso a errores y más legible usar una de las constantes de formato de fecha y hora integradas :

echo date(DATE_RFC822, 1368496604);
obispo
fuente
2
Esta debería ser la mejor respuesta.
alexg
6

Prueba este:

echo date('m/d/Y H:i:s', 1541843467);
Sunni Ha
fuente
1
¡Hola! Parece que esta respuesta ya ha sido propuesta; Ver la respuesta superior.
sombrero
4

echo date("l M j, Y",$res1['timep']);
Esto es realmente bueno para convertir una marca de tiempo de Unix en una fecha legible junto con el día. Ejemplo: jueves 7 de julio de 2016

Harry Singh
fuente
1
Ya se publicaron respuestas similares, ¿cuál es el plus de información en su respuesta?
Steffen Harbich
4
echo 'Le '.date('d/m/Y', 1234567890).' &agrave; '.date('H:i:s', 1234567890);
Ouane rojo
fuente
4
$epoch = 1483228800;
$dt = new DateTime("@$epoch");  // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2017-01-01 00:00:00

En los ejemplos anteriores "r" y "Ymd H: i: s" son formatos de fecha PHP, otros ejemplos:

Formato de salida

r              -----    Wed, 15 Mar 2017 12:00:00 +0100 (RFC 2822 date)
c              -----    2017-03-15T12:00:00+01:00 (ISO 8601 date)
M/d/Y          -----    Mar/15/2017
d-m-Y          -----    15-03-2017
Y-m-d H:i:s    -----    2017-03-15 12:00:00
SM Imtiaz Hussain
fuente