web-dev-qa-db-fra.com

Formatez la valeur datetime dans Yii 2

La valeur datetime enregistrée dans la base de données est "2014-06-30 02:52:51.210201".

C'est aussi la valeur affichée par Yii.

Quelle est la meilleure approche pour l’afficher partout sous la forme "30-06-2014 02:52:51"?

J'ai trouvé ceci dans le wiki de Yii mais je ne sais pas comment l'utiliser:

Vous pouvez configurer yii\i18n\formateur pour contrôler vos formats de date globaux à afficher pour vos paramètres régionaux. Vous pouvez définir quelque chose comme ceci dans votre fichier de configuration auquel vous pouvez accéder via

'formatter' => [
 'class' => 'yii\i18n\Formatter',
 'dateFormat' => 'd-M-Y',
 'datetimeFormat' => 'd-M-Y H:i:s',
 'timeFormat' => 'H:i:s', ]`

Ensuite, vous pouvez afficher vos heures de date n’importe où en utilisant les formats spécifiés par le formateur:

echo \Yii::t('app', 'Today is {0, date}', $yourTimeStampAttr);

UPDATE

Je crée un attribut personnalisé pour que le modèle récupère l'heure

public function getFormattedCreateTime()
{
    return DateTime::createFromFormat('Y-m-d H:i:s.u', $this->create_time)->format('d-m-Y H:i:s');
}

autre problème cependant, comment utiliser cet attribut pour effectuer une recherche dans GridView de Yii 2? Merci

RÉSOLU

peut ajouter l'attribut personnalisé pour la recherche en hérite de la fonction de recherche

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

Le deuxième paramètre permet de définir un format personnalisé, comme spécifié dans le manuel ICU . Ou vous pouvez définir le format php date () avec le préfixe php:.

Comme mentionné dans la documentation Yii2, les types de valeur suivants sont pris en charge:

Si vous avez une chaîne de date personnalisée, vous pouvez utiliser la fonction 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");
17
dmvslv

Vous avez vous-même trouvé la bonne solution en configurant le formateur dans la configuration.

En fonction de l'application squelette que vous avez utilisée (par exemple, un modèle avancé officiel), vous l'ajoutez à votre fichier de configuration main.php.

/votre-app/config/main.php

ou

/common/config/main.php

Devrait ressembler à ceci:

<?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',
],
?>

Voir ici dans la documentation pour les propriétés que vous pouvez utiliser dans le formateur.

Ensuite, dans votre application, vous pouvez utiliser le formateur sans chaînes de format.

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

ou dans les widgets de données (comme GridView), utilisez la propriété "format"

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

si vous voulez montrer dans votre vue alors écrivez simplement votre code comme ceci

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

sa montrer le format de jj-mm-aa h: i: s

2
Bhola Singh

Utilisation du plugin jQuery avec datepick et champ de saisie. Donc, sans widget résolu le problème de la manière suivante:

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

$model->released_date est une date au format timestamp mysql.

2
Kosmos

Si vous souhaitez simplement afficher la date et l'heure à partir de la valeur d'horodatage telle que created_at, updated_at alors!

GridView:

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

Identique à DetailVeiw:

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