我正在尝试将时间保存到 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
所以我有一个由三部分组成的问题:
我的做法是否正确?
我可以在完成上述步骤后将
$_POST
的值直接存储到数据库中吗?如果没有,我入库前需要做哪些处理?
所以在上面更改为 $_POST['openTime']
之后,值是:$_POST[openTime] => 08:00:00 PM
- 我是否需要再次将从数据库中获取的时间值转换为 PHP 时间对象?
请注意,还有基于时间的数据库操作。例如:“哪些地方晚上 8 点以后都开门?”
最佳答案
MySQL TIME
字段类型的格式类似于 HH:MM:SS
,范围从 -838:59:59
到 838 :59:59
。 Read 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';
}
关于php - 将 24 小时时间格式的时间存储到具有列类型时间的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357034/