我尝试将 CakePHP 3.2 的默认日期格式从 dd.mm.YYYY
设置为 YYYY-mm-dd
,这样我就不必使用 $MyDatas->mydate->format('Y-m-d')
,编辑数据时表单中更重要的是我将以 dd.mm.YYYY
格式设置日期(前 27.02.2016)。我需要 YYYY-mm-dd
(2016-02-27)。
我寻找解决方案,但没有显示任何更改(在表单中或作为 View 的一部分:$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
以上代码均无帮助。有谁知道如何更改日期格式?
最佳答案
我猜您已经升级到 CakePHP 3.2,否则您会在 config/bootstrap.php
文件中看到 DATE
有不同的类型,DATETIME
和 TIME
类型列。
在 CakePHP 3.2 中,date
类型不再映射到 Cake\I18n\Time
,而是映射到 \Cake\I18n\Date
(或 \Cake\I18n\FrozenDate
指示使用不可变对象(immutable对象)时),并且需要单独配置,这就是更改 datetime
类型或 \Cake\I18n\Time
类配置不会影响您的 DATE
列。
要为后者配置格式,请使用 \Cake\I18n\Date
和/或 \Cake\I18n\FrozenDate
类和 date
类型。在你的 Bootstrap 中,你可以做类似的事情
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
(因为后者定义了 week-numbering year )和 MM
而不是 mm
(后者定义分钟)。
参见 https://unicode-org.github.io/icu/userguide/format_parse/datetime/#datetime-format-syntax 用于 CakePHP 内部使用的 intl 格式化程序所使用的格式。
另请注意,还有 \Cake\I18n\Date::$wordFormat
和 \Cake\I18n\Date:$niceFormat
您可能也想更改它们。
另见
- Source > cakephp/app > config/bootstrap.php
- API > \Cake\I18n\DateFormatTrait::i18nFormat()
- API > \Cake\I18n\Date::$wordFormat
- API > \Cake\I18n\Date::$niceFormat
- Cookbook > Date & Time > Immutable Dates and Times
- Cookbook > Date & Time > Setting the Default Locale and Format String
- Cookbook > Internationalization & Localization > Parsing Localized Datetime Data
关于date - Cakephp 3.2 更改默认日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676227/