Cakephp 3.2更改默认日期格式 [英] Cakephp 3.2 change default date format

查看:327
本文介绍了Cakephp 3.2更改默认日期格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I try to set the default date format of CakePHP 3.2 from dd.mm.YYYY to YYYY-mm-dd, so I will not have to use $MyDatas->mydate->format('Y-m-d'), and what is more important in forms while editing data I will have date in format dd.mm.YYYY (ex- 27.02.2016). I need YYYY-mm-dd (2016-02-27).

我寻找解决方案,没有显示任何更改(以表单或部分视图: $ MyDatas-> mydate ):

I looked for solutions and none display any changes (in forms or as part of 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

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

None of code above helped. Does anyone have any idea how I can change the date format?

推荐答案

我想你已经升级到CakePHP 3.2,否则你在您的 config / bootstrap.php 文件中看到 DATE DATETIME TIME 键入列。

I guess you have been upgrading to CakePHP 3.2, otherwise you'd have seen in your config/bootstrap.php file that there are separate types for DATE, DATETIME and TIME type columns.

使用CakePHP 3.2的 date 类型不映射到 Cake\I18n\Time ,而是 \Cake \I18n\Date (或 \Cake\I18n\FrozenDate 当指示使用不可变对象时),它需要单独配置,这就是为什么要更改 datetime 类型,或 \Cake\I18n\Time 类配置不会影响您的 DATE 列。

With CakePHP 3.2 the date type doesn't mape to Cake\I18n\Time anymore, but to \Cake\I18n\Date (or \Cake\I18n\FrozenDate when instructed to use immutable objects), and it needs to be configured separately, which is why changing the datetime type, or the \Cake\I18n\Time class config won't affect your DATE columns.

要为后者配置格式,请使用 \Cake\I18n\Date 和/或 \Cake\I18n\FrozenDate 类和日期类型。在你的引导中,你可以做一些类似

To configure formatting for the latter, use the \Cake\I18n\Date and/or \Cake\I18n\FrozenDate class and the date type. In your bootstrap, you could do something like

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 locale。请注意,您应该使用 yyyy 而不是 YYYY (因为后者定义了 week-numbering year )和 MM 而不是 mm (后者定义分钟)。

That would override the defaults that are being applied when using the pl_PL locale. Note that you should use yyyy instead of YYYY (as the latter defines the week-numbering year), and MM instead of mm (as the latter defines minutes).

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

See http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details for the format used by the intl formatter that CakePHP uses internally.

还要注意,还有一个 \Cake\I18n\Date :: $ wordFormat \Cake\I18n\Date:$ niceFormat 您可能还需要更改。

Also note that there's also \Cake\I18n\Date::$wordFormat and \Cake\I18n\Date:$niceFormat which you may want to change too.

另请参阅

  • 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 > Internationalization & Localization > Parsing Localized Datetime Data

这篇关于Cakephp 3.2更改默认日期格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆