Mas*_*Abe 2 format cakephp date date-formatting cakephp-3.2
我尝试将CakePHP 3.2的默认日期格式设置dd.mm.YYYY为YYYY-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
以上代码都没有帮助.有谁知道如何更改日期格式?
我猜你已经升级到3.2 CakePHP的,否则,你会看到你的config/bootstrap.php文件有不同的类型DATE,DATETIME和TIME类型的列.
使用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');
这将覆盖使用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你可能要改变了.
也可以看看