2017-07-03 5 views
0

Ich habe einen Filter, um Daten auszuwählen. Bei der Abfrage ist es WHERE-KlauselWie fügt man eine Where-Klausel in Where-Klausel hinzu?

if ($this->date_begin) { 
      $query->andFilterWhere(['>=', 'date_begin', $this->date_begin]); 
     } 

So von jedem Datum, das ich Daten sortieren (wenn ich 01-01-2000 wählen 18.00.00 es zeigt Daten aus diesem Datetime). Jetzt muss ich meine Zeitzone ändern, indem ich eine Stunde hinzufüge (zB ich gebe 01-01-2000 18:00:00 ein, aber es sollte Daten von 01-01-2000 19:00:00 anzeigen). Ich brauche etwas wie

$this->date_begin+'1 hour' 

aber nicht wissen, wie es zu codieren.

+0

Nur eine Nebenbemerkung. Wenn Sie eine eigene Lösung entwickeln und mit mehreren Zeitzonen umgehen müssen, würde ich Ihnen empfehlen, Daten in UTC zu speichern (und alles in UTC zu konvertieren) oder den Datentyp timezone enabled zu verwenden. Sonst haben Sie später einen Haufen Kopfschmerzen ... –

+0

haben Sie sich https://www.postgresql.org/docs/8.0/static/functions-datetime.html und https://www.postgresql.org angesehen /docs/7.2/static/timezones.html? –

Antwort

1

Der einfachste Weg ist strtotime() PHP-Funktion zu verwenden:

date("Y-m-d H:i:s", strtotime($this->date_begin . ' +1 hour')) 

In Yü Stil

\Yii::$app->formatter->asDatetime(\Yii::$app->formatter->asTimestamp('2017-12-12 10:00:00 +1 hour')) 

Aber wie Rafal Ziolkowski in Kommentar sagte, sollten Sie konvertieren und speichern dieses Datum in UTC wegen der Zeitzone Probleme.

Verwandte Themen