2017-05-16 5 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/ja/core-libraries/time.html – vpdeva

+0

紛失しているものはありますか?私は、そのページがjsonの出力を変更するために提案したものを行っていますが、うまくいきません。 – DBnR

+1

ICUのバージョン( '\ INTL_ICU_VERSION')は何ですか?少なくとも56.1 – ndm

答えて

1

@ndmによって提供される正解:少なくともICUに

バージョン56.1より前のバージョンでは、setJsonEncodeFormatを使用する正しい方法は、'でコロンをエスケープすることです。

関連する問題