Cakephp 3.2更改默认日期格式

Mas*_*Abe 2 format cakephp date date-formatting cakephp-3.2

我尝试将CakePHP 3.2的默认日期格式设置dd.mm.YYYYYYYY-mm-dd,所以我不必使用$MyDatas->mydate->format('Y-m-d'),而在编辑数据时表格中更重要的是格式化日期dd.mm.YYYY(ex-27.02.2016).我需要YYYY-mm-dd(2016-02-27).

我寻找解决方案,没有显示任何变化(在表单中或作为视图的一部分:) $MyDatas->mydate:

// in AppController

ini_set('intl.default_locale', 'pl_PL');

//and/or

use Cake\Database\Type;
Type::build('datetime')->useLocaleParser()->setLocaleFormat('YYYY-mm-dd');

//and/or

use Cake\I18n\I18n;
I18n::locale('pl_PL');

//and/or

use Cake\I18n\Time; 
Time::$defaultLocale = 'pl-PL'; //and or
Time::setToStringFormat('YYYY-mm-dd HH:mm');//and or
Type::build('datetime')->useLocaleParser(false);//and or
Run Code Online (Sandbox Code Playgroud)

以上代码都没有帮助.有谁知道如何更改日期格式?

ndm*_*ndm 8

我猜你已经升级到3.2 CakePHP的,否则,你会看到你的config/bootstrap.php文件有不同的类型DATE,DATETIMETIME类型的列.

使用CakePHP 3.2,date类型不再是mape Cake\I18n\Time,而是\Cake\I18n\Date(或\Cake\I18n\FrozenDate当被指示使用不可变对象时),并且需要单独配置,这就是更改datetime类型或\Cake\I18n\Time类配置不会影响DATE列的原因.

要为后者配置格式,请使用\Cake\I18n\Date和/或\Cake\I18n\FrozenDate类和date类型.在你的引导程序中,你可以做类似的事情

ini_set('intl.default_locale', 'pl_PL');

// ...

Cake\I18n\Date::setToStringFormat('yyyy-MM-dd');
Cake\I18n\FrozenDate::setToStringFormat('yyyy-MM-dd');

\Cake\Database\Type::build('date')
    ->useImmutable()
    ->useLocaleParser()
    ->setLocaleFormat('yyyy-MM-dd');
Run Code Online (Sandbox Code Playgroud)

这将覆盖使用pl_PL区域设置时应用的默认值.请注意,您应该使用yyyy而不是YYYY(因为后者定义了周编号年份),而MM不是mm(因为后者定义了分钟).

有关CakePHP内部使用的intl格式化程序使用的格式,请参见http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details.

另外请注意,这里还有\Cake\I18n\Date::$wordFormat\Cake\I18n\Date:$niceFormat你可能要改变了.

也可以看看