2013-02-18 215 views
1

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

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

它返回:

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

现在我想将其转换为MySQL的时间格式:00:00:00 - 24格式,这样我可以检索记录中匹配这个特定的时间。 我该怎么做?

回答

0

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

因此,事实上,实际的数据阵列拥有独立hourminmeridian领域不影响它存储在数据库中的方式,这将很好地转换为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') 
    ) 
)); 
+0

谢谢,但是当我匹配$ this-> request-> data ['Rideoffer'] ['DepartureTime']条件时,记录不匹配。如果我明确指定时间像你说的'05:00:00',记录被返回。为什么这样? – z22 2013-02-19 09:53:29

+0

@ z22因为'$ this-> request-> data ['Rideoffer'] ['DepartureTime']'拥有一个数组,而不是字符串'05:00:00',所以你不能直接使用它作为条件。无论如何,请参阅我更新的答案以获取价值。 – Oldskool 2013-02-19 10:02:19

+0

谢谢!它现在有效。 :) – z22 2013-02-19 10:18:55

0

cakephp帮手dateFormat会帮助你。

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

+0

其实我已经用它的观点,但我的问题是我如何检索其在MySQL格式控制器价值? – z22 2013-02-18 08:06:44

+0

表示从数据库选择查询。 – 2013-02-18 08:11:09

相关问题