1

我希望将 CakePHP 中以数组格式返回的时间转换为 MySQL 中的 24 小时格式。以下是代码:

$this->request->data['Rideoffer']['DepartureTime']

它返回:

array(
'hour' => '05',
'min' => '21',
'meridian' => 'am'

)

现在我希望将其转换为 MySQL 时间格式:00:00:00- 24 格式,以便我可以检索与此特定时间匹配的记录。我怎么做?

4

2 回答 2

0

cakephp helpers dateFormat会帮助你。

dateformat option将允许您配置日期部分。

于 2013-02-18T07:48:19.243 回答
0

当您使用 FormHelper 并且departure_time字段上的数据类型是DATETIMEorTIME时,Cake 将“自动”正确处理所有查找和保存操作。

因此,实际的数据数组是独立hour的,min并且meridian字段不会影响它在数据库中的存储方式,这将很好地转换为,05:21:00而无需在您的模型或控制器中使用任何额外的逻辑。如果要查找这次匹配的所有记录,只需使用完整的时间戳查找即可。使用类似的东西:

$this->Rideoffer->find('all', array(
    'conditions' => array(
        'Rideoffer.departure_time' => '05:21:00'
    )
));

更新

在回复您的评论时,如果您想立即使用插入的值,请将其转换为 DateTime 对象并根据您的条件对其进行格式化。例如:

$time =& $this->request->data['Rideoffer']['DepartureTime'];
$date = new DateTime($time['hour'] . ':' . $time['min'] . ' ' . $time['meridian']);

然后在您的查找中格式化日期:

$this->Rideoffer->find('all', array(
    'conditions' => array(
        'Rideoffer.departure_time' => $date->format('H:i:s')
    )
));
于 2013-02-18T08:16:16.560 回答