webentwicklung-frage-antwort-db.com.de

Formatieren Sie den Datums-/Uhrzeitwert in Yii 2

Der in der Datenbank gespeicherte Datums-/Uhrzeitwert ist "2014-06-30 02:52:51.210201".

Dies ist auch der von Yii angezeigte Wert.

Was ist die beste Methode, um es überall als "30-06-2014 02:52:51" anzuzeigen?

Gefunden in Yiis Wiki aber ich weiß nicht, wie ich es benutzen soll:

Sie können yii\i18n\formatter so konfigurieren, dass Ihre globalen Datumsformate für die Anzeige für Ihr Gebietsschema gesteuert werden. Sie können so etwas in Ihrer Konfigurationsdatei festlegen, auf die Sie über zugreifen können

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

Dann können Sie Ihre Datumszeiten überall mit den vom Formatierer angegebenen Formaten anzeigen:

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

UPDATE

Ich erstelle ein benutzerdefiniertes Attribut für das Modell, um die Uhrzeit abzurufen

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

ein weiteres Problem: Wie verwende ich dieses Attribut für die Suche in GridView von Yii 2? Vielen Dank

GELÖST

kann das benutzerdefinierte Attribut für die Suche hinzufügen, indem die Suchfunktion übernommen wird

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

Mit dem zweiten Parameter können Sie ein benutzerdefiniertes Format einstellen, wie in der Anleitung ICU angegeben. Oder Sie können das Format php date () mit dem Präfix php: einstellen.

Wie in der Dokumentation zu Yii2 erwähnt, werden die folgenden Werttypen unterstützt:

Wenn Sie eine benutzerdefinierte Datumszeichenfolge haben, können Sie die Funktion DateTime :: createFromFormat () verwenden:

$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

Sie haben selbst die richtige Lösung gefunden, indem Sie das Formatierungsprogramm in der Konfiguration einstellen.

Basierend auf der von Ihnen verwendeten Skelett-App (zum Beispiel offizielle erweiterte Vorlage) fügen Sie diese Ihrer Konfigurationsdatei main.php hinzu.

/your-app/config/main.php

oder

/common/config/main.php

Sollte so aussehen:

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

Siehe hier in der Dokumentation für die Eigenschaften, die Sie im Formatierungsprogramm verwenden können.

Dann können Sie in Ihrer App den Formatierer ohne Formatstrings verwenden.

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

oder in Daten-Widgets (wie GridView) verwenden Sie die Eigenschaft "format"

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

wenn Sie in Ihrer Ansicht anzeigen möchten, schreiben Sie einfach Ihren Code so

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

es zeigt das Format von dd-mm-yy h: i: s

2
Bhola Singh

Datumsauswahl und Eingabefeld des jQuery-Plugins verwenden. Also, ohne Widget gelöst Problem auf den nächsten Weg:

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

dabei ist $model->released_date ein Datum im Zeitstempel des MySQL-Formats.

2
Kosmos

verwenden Sie dies einfach in Ihrem GridView-Widget

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

zum Beispiel

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

Wenn Sie nur Datum und Uhrzeit aus einem Zeitstempelwert wie created_at, updated_at anzeigen möchten, dann!

Rasteransicht:

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

Gleich wie DetailVeiw:

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