我尝试将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
以上代码都没有帮助。有谁知道如何更改日期格式?
答案 0 :(得分:8)
我猜你一直在升级到CakePHP 3.2,否则你在config/bootstrap.php
文件中看到DATE
,DATETIME
和{{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
。