Cakephp 3.2更改默认日期格式

时间:2016-02-27 22:25:45

标签: date cakephp format date-formatting cakephp-3.2

我尝试将CakePHP 3.2的默认日期格式从g5\oLH*aFZn=mL5GKS@5&P%*设置为dd.mm.YYYY,因此我不必使用YYYY-mm-dd,并且在编辑数据时在表单中更重要我的日期格式为$MyDatas->mydate->format('Y-m-d')(ex-27.02.2016)。我需要dd.mm.YYYY(2016-02-27)。

我寻找解决方案,没有显示任何更改(在表单中或作为视图的一部分:YYYY-mm-dd):

$MyDatas->mydate

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

3 个答案:

答案 0 :(得分:8)

我猜你一直在升级到CakePHP 3.2,否则你在config/bootstrap.php文件中看到DATEDATETIME和{{1}有不同的类型键入列。

使用CakePHP 3.2,TIME类型不再是date,而是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(后者定义 week-numbering year ),YYYY代替MM (因为后者定义了分钟)。

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

另请注意,您也可能需要更改mm\Cake\I18n\Date::$wordFormat

另见

答案 1 :(得分:5)

经过大量搜索,我找到了。

在'app'=>下的config / app.php中[]

更改

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'us_US'),

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'pl_PL'),

,您的所有日期都将更改为您的格式。 因为在 配置/ boostrap.php 它读了

ini_set('intl.default_locale', Configure::read('App.defaultLocale'));

结束了蛋糕\ I18n FrozenDate它设置为

protected static $_toStringFormat = [IntlDateFormatter::SHORT, -1];

答案 2 :(得分:0)

将此代码粘贴到此文件config/site.php

return [
 'Site' => [      
        'CakeDateFormat' => 'Y-M-d',
        'DatePickerFormat' => 'mm/dd/yyyy',
        'CakeDateFormatForView' => 'm/d/Y',        
    ]
]

在控制器中使用此日期格式:

use Cake\I18n\Time;

$this->request->data['date'] =Time::parseDate($this->request->data['date'], Configure::read('Site.CakeDateFormat'));

根据您的需要在CakeDateFormat

中设置日期格式