2017-01-30 1 views
0

나는 단지 시간을 (배열 형식으로) 24 시간 문자열로 변환하기를 원하기 때문에 간단한 질문이 있습니다. 내가 사용자 입력으로부터 시간을 얻고 포맷팅이 작동하지 않는 배열 객체에 배치하는 문제. 나는 $this->request->data['start_time']이 형식의되지 않기 때문에, 당신은 타임 인스턴스를 생성해야 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

에서 답을 찾을 수 couldnt한다 :

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

리서치 연구를한다면 똑같은 답을 얻을 수 있고 마법 같은 방법은 없다. 요점은 관습을 따르고 유틸리티에 내장 된 프레임 워크를 사용하는 것입니다. 코드를 반복하지 않고 포맷 된 데이터를 얻으려면 엔티티에서 _Virtual Field_ (_getStartTime())을 작성하십시오. 따라서 $ entity-> start_time을 호출 할 때마다 데이터베이스에서 수정하지 않고 형식화 된 시간을 가져옵니다. –