php strtotime无视小时,分钟,秒

时间:2014-03-15 18:38:09

标签: php mysql database strtotime

我有一个日期时间来自一个格式为12:00 PM Sat Mar 15的精选表格纯粹出于审美原因。 PHP strtotime函数将此转换为(并且可能是正确的):1394866800

但是,当我为数据库$db_time = date('Y-m-d H:i:s', $time_req);准备时间时,我得到2014-03-15 00:00:00。有没有办法保持我的视觉吸引力时间显示,但在我的MySQL数据库中输入正确的格式?

2 个答案:

答案 0 :(得分:2)

问题是您的输入采用非标准格式,因为时间是先到,然后是星期几,然后是月份和月份。你需要告诉PHP如何解释这个。

您可以使用date_create_from_format,如下所示:

$formatted_date = '12:00 PM Sat Mar 15';
// to use your POST data, use $formatted_date = $_POST['time_req'];
echo date_create_from_format('H:i A D M j', $formatted_date)->format('Y-m-d H:i:s');

<强>输出:

2014-03-15 12:00:00

注意:以上是方法DateTime::createFromFormat的单行程序版本,正如@MarkBaker在评论中所指出的那样。你也可以这样做:

$formatted_date = '12:00 PM Sat Mar 15';
// to use your POST data, use $formatted_date = $_POST['time_req'];

// create an object
$mydate = DateTime::createFromFormat('H:i A D M j', $formatted_date);
// invoke the format method
echo $mydate->format('Y-m-d H:i:s');

答案 1 :(得分:1)

使用DateTime::createFromFormat()

$st = "12:00 PM Sat Mar 15";

$datetime = DateTime::createFromFormat("H:i A D M j", $st);
$mysql_formatted = $datetime->format("Y-m-d H:i:s");