2012-08-01 57 views
5

Tengo dos campos de texto, uno para la fecha en formato 01/08/2012 y un segundo campo que contiene la hora. Actualmente tengo el campo de tiempo en el formato 09:41 a.m. pero tengo cierta flexibilidad con su formato (si 24 horas es más fácil, por ejemplo).PHP Fecha y hora de la cadena de conversión a MySQL DateTime

Estaba planeando simplemente concatenar las cadenas y luego convertirlas. ¿Debo convertir primero la fecha en 2012-08-01?

¿Cómo puedo terminar convirtiendo a fecha y hora (2012-08-01 09:41:00)? ¿Cómo convertir de nuevo a formato 08/01/2012 y 09:41 a.m.?

+0

Ver ['strtotime'] (php.net/manual/en/function.strtotime.php) y [' date'] (php.net/manual/en/function.date.php). Concat, 'strtotime', luego' date' en el formato que desee. – Palladium

+0

Entonces, ¿actualmente está almacenando la fecha y la hora como cadenas simples ...? – knittl

+0

no, estoy almacenando como fecha y hora, pero necesito mostrar la fecha y la hora en campos separados en una página. La fecha tiene que estar en un formato determinado para trabajar con un jQuery datepicker. – Motive

Respuesta

6
SELECT STR_TO_DATE(concat('08/01/2012', '09:41am'),'%d/%m/%Y%h:%i'); 
+0

Perfecto, y 'SELECT DATE_FORMAT ('2012-01-08 09:41:00', '% r')' para convertir de nuevo parece funcionar también. ¡Gracias! – Motive

2

Por el lado de la base de datos, puede utilizar:

STR_TO_DATE() utilizando los especificadores en this table a convertir en un formato fácil de base de datos. Reference

DATE_FORMAT() devolverá la parte que desee de ese tiempo de base de datos. Reference

En el lado de PHP que puede utilizar:

  • strtotime() - Analiza cualquier descripción textual de fecha y hora Inglés en una marca de tiempo Unix
  • date - formato a una fecha/hora local de

strotime producirá una marca de tiempo Unix basada en cualquier fecha/hora de cadena que se le pase. Si pasa ambos campos (08/01/2012 & 09:41 a.m.) se generará una marca de tiempo basada en él. Para invertir el proceso, usa date("m/d/Y H:ia").

$field1 = '08/01/2012'; 
$field2 = '09:41am'; 

$stamp = strtotime($field1 . ' ' . $field2); 

echo date("m/d/Y H:ia", $stamp); 

No he probado esto, pero debería funcionar.

Cuestiones relacionadas