2012-08-08 12 views
6

Intentando convertir la variable de tiempo estándar de la entrada de formulario al formato TIME aceptable para MySQL INSERT. Podría estar haciendo todo mal y podría necesitar algo de ayuda. He leído las funciones de MySQL TIME y PHP TIME, pero aún no he encontrado una solución.Convertir la variable PHP "11:00 AM" a formato de hora MySQL

Esto es lo que he tratado como un ejemplo:

<?php 
$time_input = '11:00 AM'; 

$strtotime = strtotime($time_input); 

$mysql_time = date('H:m:s',$strtotime); 

echo "<p>time_input: $time_input</p>"; 
echo "<p>strtotime: $strtotime</p>"; 
echo "<p>mysql_time: $mysql_time</p>"; 
?> 

El resultado está cambiando el tiempo de 11:08:00 (no sé donde los 8 minutos está viniendo):

time_input: 11:00 AM 

strtotime: 1344438000 

mysql_time: 11:08:00 

¡Cualquier ayuda es muy apreciada!

+2

El 8 es porque es el mes octavo : Agosto. – Evert

Respuesta

8

DateTime va a hacer esto para usted:

$time_input = '11:00 AM'; 
$date = DateTime::createFromFormat('H:i A', $time_input); 
$formatted = $date->format('H:i:s'); 

normalmente evito strtotime() cuando sea posible, ya que puede ser algo impredecible.

Puedes verlo trabajar en this demo.

+0

¡Gracias por la recomendación sobre el uso de DateTime! Voy a intentarlo. – SirOracle

4

m es el formato para el mes con ceros a la izquierda (agosto, es decir, 08), que desea i (minutos con ceros a la izquierda):

$mysql_time = date('H:i:s',$strtotime); 

PHP date docs

+0

geez ... no puedo creer que no me haya dado cuenta de eso !! ¡gracias! – SirOracle

Cuestiones relacionadas