gpt4 book ai didi

date - Cakephp 3.2 更改默认日期格式

转载 作者:行者123 更新时间:2023-12-05 01:02:25 25 4
gpt4 key购买 nike

我尝试将 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 有不同的类型,DATETIMETIME 类型列。

在 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 您可能也想更改它们。

另见

关于date - Cakephp 3.2 更改默认日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com