web-dev-qa-db-ja.com

Yii 2の日時値をフォーマットします

データベースに保存される日時値は「_2014-06-30 02:52:51.210201_」です。

これはYiiによって表示される値でもあります。

どこにでも「_30-06-2014 02:52:51_」として表示する最良の方法は何ですか?

これは Yiiのwiki にありますが、使用方法がわかりません。

Yii\i18n\formatterを構成して、ロケールの表示用にグローバルな日付形式を制御できます。あなたはあなたが設定ファイルにこのような何かを設定することができます

_'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');
}
_

ただし、別の問題、Yii 2のGridViewでの検索にこの属性を使用するにはどうすればよいですか?ありがとう

[〜#〜] solved [〜#〜]

検索機能を継承することにより、検索用のカスタム属性を追加できます

13
Edxz
\Yii::$app->formatter->asDatetime("2014-06-30 02:52:51.210201", "php:d-m-Y H:i:s");

2番目のパラメーターでは、 ICUマニュアル で指定されているカスタム形式を設定します。または、phpを設定できます date() format with 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");
18
dmvslv

設定でフォーマッタを設定して、適切なソリューションを自分で見つけました。

使用したスケルトンアプリ(公式の高度なテンプレートなど)に基づいて、これを設定ファイル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',
],
?>

フォーマッタで使用できるプロパティについては、 ドキュメントのこちら を参照してください。

その後、アプリでフォーマット文字列なしでフォーマッターを使用できます。

Yii::$app->formatter->asDate($yourDate);
Yii::$app->formatter->asDatetime($yourDatetime);
Yii::$app->formatter->asTime($yourTime);

またはデータウィジェット(GridViewなど)で「format」プロパティを使用します

'$yourDate:date',
'$yourDatetime:datetime',
'$yourTime:time',
10
mfgmicha

ビューに表示したい場合は、次のようにコードを記述してください

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
     [ 
      'label' => 'Modified Date',
      'value' => date("d-M-Y h:i:s",  strtotime($model->client_modified_date)),
     ]
   ],
]) ?>

dd-mm-yy h:i:sの形式を表示します

2
Bhola Singh

JQueryプラグインのdatepickと入力フィールドを使用します。そのため、ウィジェットを使用せずに次の方法で問題を解決しました。

<?= $form->field($model, 'released_date')->textInput(['maxlenght' => 255, 'value' => date( 'd-M-Y', strtotime( $model->released_date ) )]); ?>

どこ $model->released_dateは、mysql形式のタイムスタンプの日付です。

2
Kosmos

gridViewウィジェット内でこれを使用するだけです

'$yourDate:date',
'$yourDatetime:datetime',
'$yourTime:time'

例えば

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            'id',
            '$yourDate:date',
['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
0
Shuhad zaman

created_atupdated_atのようなタイムスタンプ値から日付と時刻を表示するだけの場合は、!

グリッドビュー:

'created_at:datetime', // Jul 28, 2016, 8:29:38 PM
'updated_at:datetime', // Jul 28, 2016, 8:29:38 PM

DetailViewと同じ:

'created_at:datetime', // Jul 28, 2016, 8:29:38 PM
'updated_at:datetime', // Jul 28, 2016, 8:29:38 PM
0