保存在数据库中的日期时间值为" 2014-06-30 02:52:51.210201".
这也是Yii显示的值.
将它显示为" 30-06-2014 02:52:51"无处不在的最佳方法是什么?
在Yii的wiki中找到了这个,但不知道如何使用它:
您可以配置yii\i18n\formatter来控制您的区域设置显示的全局日期格式.您可以在配置文件中设置可以访问的类似内容
Run Code Online (Sandbox Code Playgroud)'formatter' => [ 'class' => 'yii\i18n\Formatter', 'dateFormat' => 'd-M-Y', 'datetimeFormat' => 'd-M-Y H:i:s', 'timeFormat' => 'H:i:s', ]`然后,您可以使用格式化程序指定的格式在任何地方显示日期时间:
echo \Yii::t('app', 'Today is {0, date}', $yourTimeStampAttr);
UPDATE
我为模型创建了一个自定义属性来检索时间
public function getFormattedCreateTime()
{
return DateTime::createFromFormat('Y-m-d H:i:s.u', $this->create_time)->format('d-m-Y H:i:s');
}
Run Code Online (Sandbox Code Playgroud)
另一个问题是,如何在Yii 2的GridView中使用此属性进行搜索?谢谢
解决了
可以通过继承搜索功能为搜索添加自定义属性
dmv*_*slv 19
\Yii::$app->formatter->asDatetime("2014-06-30 02:52:51.210201", "php:d-m-Y H:i:s");
Run Code Online (Sandbox Code Playgroud)
第二个参数允许您设置ICU手册中指定的自定义格式.或者你可以用前缀设置php date()格式php:.
如Yii2文档中所述,支持以下类型的值:
如果您有自定义日期字符串,则可以使用DateTime :: createFromFormat()函数:
$dateTime = \DateTime::createFromFormat("d/m/Y H:i:s", '31/01/2015');
\Yii::$app->formatter->asDatetime($dateTime, "php:d-m-Y H:i:s");
Run Code Online (Sandbox Code Playgroud)
mfg*_*cha 10
您自己找到了正确的解决方案,在配置中设置了格式化程序.
根据您使用的骨架应用程序(例如官方高级模板),然后将其添加到配置文件main.php中.
/your-app/config/main.php
要么
/common/config/main.php
应该是这样的:
<?php
return [
'components' => [
...
'formatter' => [
'dateFormat' => 'd-M-Y',
'datetimeFormat' => 'd-M-Y H:i:s',
'timeFormat' => 'H:i:s',
'locale' => 'de-DE', //your language locale
'defaultTimeZone' => 'Europe/Berlin', // time zone
],
],
// set target language
'language' => 'de-DE',
],
?>
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序中,您可以使用没有格式字符串的格式化程
Yii::$app->formatter->asDate($yourDate);
Yii::$app->formatter->asDatetime($yourDatetime);
Yii::$app->formatter->asTime($yourTime);
Run Code Online (Sandbox Code Playgroud)
或者在数据小部件(如GridView)中使用"format"属性
'$yourDate:date',
'$yourDatetime:datetime',
'$yourTime:time',
Run Code Online (Sandbox Code Playgroud)