2011-04-05 22 views
29

tengo fechas almacenadas en una tabla de MySQL, que se establecen para almacenar CURRENT TIMESTAMP en cada fila y se almacenan de la siguiente manera:convertir la marca de tiempo mysql en la fecha y hora reales?

2010-05-29 01:17:35 

pero lo que estoy tratando de hacer es de alguna manera usar PHP para poder separar todo y crear una fecha más como:

de mayo de 2010 a las 1:17 29 de

puede alguien al menos me directo en el camino correcto que debería tomar. ¡Cualquier ayuda es muy apreciada!

Respuesta

51
echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35')); 

http://php.net/manual/en/function.date.php

+0

¡increíble! ¡muchas gracias! ¡eso fue súper simple! ¡gracias de nuevo! – mcbeav

+0

Asegúrese de revisar * Notaciones localizadas * en el manual de PHP en la página de Formatos compuestos http://php.net/manual/en/datetime.formats.compound.php –

20

Usted tiene dos soluciones:

  • Uso strtotime() para analizar la fecha a una marca de tiempo, y date() a cambiar formato a una cadena
  • o utilizar el DateTime clase


En el código PHP, esto significaría usando:

echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35')); 

O:

$dt = new DateTime('2010-05-29 01:17:35'); 
echo $dt->format('M j Y g:i A'); 


strtotime + date es la solución que verá el más utilizado; pero no es la mejor solución: con ellos, trabajará en las marcas de tiempo UNIX, lo que significa un rango limitado de fechas (de 1970 a 2038, si usa enteros de 32 bits).

Por otro lado, utilizando la clase DateTime, no habrá límite en el rango de fechas con las que puede trabajar.

+3

["El rango es de aproximadamente 292 mil millones de años en el pasado al mismo en el futuro. "] (http://php.net/manual/en/intro.datetime.php) - Realmente no llamaría a eso *" sin límite "*. Oh, bueno, +1 de todos modos. ;-))) – deceze

+5

Humph, estaba seguro de que alguien iba a decir que esto no es * ilimitado * ;-) –

+0

Disculpa, hábito profesional. ;-PAG – deceze

1

Si usted tiene un campo DATETIME en su mesa y sólo desea que el campo de fecha y, a continuación:

SELECT DATE_FORMAT(timestamp,'%M %D, %Y') FROM Mytable; 

o:

SELECT DATE_FORMAT(timestamp,'%Y-%m-%d') FROM Mytable; 

donde timestamp es el nombre de la columna.

Cuestiones relacionadas