以24小时时间格式将时间存储到具有列类型时间的数据库中

时间:2014-12-08 11:30:22

标签: php mysql codeigniter datetime time

我正在努力节省MySQL数据库的时间。我在数据库中将列类型保留为time

从表格中我以24小时格式获得$_POST时间。

时间表格中的值如下:

 $_POST[openTime] = 20:00

当我使用strtotime()date()转换时间时,我得到输出为:

$_POST['openTime'] = date( "h:i:s A", strtotime($_POST['openTime']));

输出:

$_POST[openTime] => 08:00:00 PM

所以我有三个部分的问题:

  1. 我是以正确的方式做的吗?

  2. 我可以在上面执行的步骤之后将$_POST的值直接存储到数据库中吗?如果在存储到数据库之前不需要什么处理?

  3. 所以在对$_POST['openTime']进行上述更改之后,值为:$_POST[openTime] => 08:00:00 PM

    1. 我是否需要再次将从数据库获取的时间值转换为PHP时间对象?
    2. 请注意,还会根据时间进行数据库操作。例如:"所有地方都在晚上8点后开放?"

1 个答案:

答案 0 :(得分:3)

MySQL TIME字段类型的格式类似于HH:MM:SS,范围从-838:59:59838:59:59Read more here。基于此,您无法存储格式化时间,如08:00:00 PM

如果您将开放时间发布为20:00,则需要使用H:i:s格式:

$_POST['openTime'] = date("H:i:s", strtotime($_POST['openTime']));

但恕我直言,这是不必要的。你需要的是一个验证,像这样:

if (preg_match('~^\d{2}:\d{2}$~', $_POST['openTime'])) {
    echo "posted time is valid!";
    $saveTime = $_POST['openTime'] . ':00';
}