2017-01-30 36 views
0

我有一个简单的问题,我只是想转换的时间(以阵列格式)到24小时的时间字符串。这个问题我从用户输入的时间和它把它在格式心不是工作数组对象。 我不可能找到https://book.cakephp.org/3.0/en/core-libraries/time.html#conversion时间序列converson cakephp3

time format inputted from a form 
'start_time' => [ 
     'hour' => '02', 
     'minute' => '00', 
     'meridian' => 'pm' 
    ], 

view// 
    echo $this->Form->input('start_time', ['label' => 'Class Start Time','type' => 'time', 
        'interval' => 5,'timeFormat'=>12,'value'=>$startTime,]); 



//controller 
     if ($this->request->is('post')) { 

     debug($this->request->data['start_time']->i18nFormat('HH:mm:ss'));//cant use on an array 



    //this works but is there a better way 
$startTime = $this->request->data['start_time']['hour'].":".$this->request->data['start_time']['minute']." ". 
         $this->request->data['start_time']['meridian']; 
       $this->request->data['start_time'] = date("H:i:s", strtotime($startTime)); 
       debug($this->request->data); 

回答

1

答案您应该创建一个时间例如,由于$this->request->data['start_time']没有格式化:

use Cake\I18n\Time; 
... 
$StartTimeHour = $this->request->data['start_time']['hour']; 
$StartTimeMinute = $this->request->data['start_time']['minute']; 
$StartTimeMeridian = $this->request->data['start_time']['meridian']; 

$time = new Time("${StartTimeHour}:${StartTimeMinute} ${StartTimeMeridian}"); 

echo $time->i18nFormat('HH:mm:ss'); 

*测试和工作。

+0

好,我看你做了什么,这是一个伟大的答案,但如果你做了痘痘的研究,你会得到相同的答案,没有一个神奇的方法是如何从我的解决方案 – jagguy

+0

这个显著不同。问题的关键是遵循约定,并使用内置的公用事业framwork。为了获得无重复码格式的数据,做一个_Virtual Field_你的实体('_getStartTime()'),所以每次调用$实体 - > START_TIME,你会得到格式化小时没有对矫正它的数据库。 –