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");
在我的蛋糕中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");