2017-05-16 36 views
1

을 예상대로 작동하지 :CakePHP의 setJsonEncodeFormat 나는 다음과 같은 한 제의 CakePHP bootstrap.php에서

use Cake\I18n\Date; 
use Cake\I18n\FrozenDate; 
use Cake\I18n\FrozenTime; 
use Cake\I18n\Time; 

Time::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
FrozenTime::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
Date::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
FrozenDate::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 

의 API 방식으로 다음 작업을 수행 할 때

use Cake\I18n\Time; 

$time = new Time(); 

$this->set([ 
    'time' => $time, 
    '_serialize' => ['time'] 
]); 

결과이 같은 것입니다 :

{ 
    "time": "2017-05-16 11.55.13" 
} 

잘못된 시간 형식에 유의하십시오. 어떤 이유로 CakePHP/PHP 7/Linux는 :.으로 바꿉니다. Windows에서 제대로 작동합니다.

CakePHP의 버전 =>3.4.6 (이 문제가 오랫동안되었지만)

PHP 버젼 = "7.0.15-0ubuntu0.16.04.4

+0

도움이 될 것입니다. https://book.cakephp.org/3.0/ko/core-libraries/time.html – vpdeva

+0

내가 누락 된 것이 있습니까? 나는 그 페이지가 json 출력을 변경하는 것에 대해 제안한 것을 수행했지만 작동하지 않습니다 ... – DBnR

+1

ICU 버전 ('\ INTL_ICU_VERSION')이 무엇입니까? 적어도 56.1 – ndm

답변

1

@ndm 의해 제공된 정답 :

적어도 ICU하여 이전 버전은 56.1로, setJsonEncodeFormat를 사용하는 올바른 방법과 같이 '와 콜론을 탈출하는 것입니다 :

Time::setJsonEncodeFormat("yyyy-MM-dd HH':'mm':'ss"); 
FrozenTime::setJsonEncodeFormat("yyyy-MM-dd HH':'mm':'ss"); 
Date::setJsonEncodeFormat("yyyy-MM-dd HH':'mm':'ss"); 
FrozenDate::setJsonEncodeFormat("yyyy-MM-dd HH':'mm':'ss");