在我的CakePHP bootstrap.php中,我有以下内容:
Your Data =>["0"
Your Data =>"31"
Your Data =>"30"]
在API方法中,我执行以下操作:
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');
结果是这样的:
use Cake\I18n\Time;
$time = new Time();
$this->set([
'time' => $time,
'_serialize' => ['time']
]);
请注意不正确的时间格式。出于某种原因,CakePHP / PHP 7 / Linux将{
"time": "2017-05-16 11.55.13"
}
更改为:
。在Windows上它工作正常。
CakePHP版本=> .
(虽然这个问题已存在很长时间了)
PHP Version => 3.4.6
答案 0 :(得分:1)
@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");