将PHP变量“11:00 AM”转换为MySQL时间格式

时间:2012-08-08 22:47:51

标签: php mysql time

尝试将标准时间变量从表单输入转换为MySQL INSERT可接受的TIME格式。我可能会犯这一切都错了,可以使用一些帮助。我已经阅读了MySQL TIME函数和PHP TIME函数,但还没有找到解决方案。

以下是我尝试过的例子:

<?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>";
?>

结果是将时间改为11:08:00(不确定8分钟来自哪里):

time_input: 11:00 AM

strtotime: 1344438000

mysql_time: 11:08:00

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:9)

DateTime会为您执行此操作:

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

我通常会尽可能避免使用strtotime(),因为它可能有些不可预测。

您可以在this demo中看到它。

答案 1 :(得分:4)

m是带有前导零(月份,即08)的月份格式,您需要i(带前导零的分钟数):

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

PHP date docs