CakePHP setJsonEncodeFormat 未按预期运行

CakePHP setJsonEncodeFormat not functioning as expected

在我的蛋糕中PHP 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

@ndm 提供的正确答案:

至少在 56.1 之前的 ICU 版本中,使用 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");